0

私のアクティビティには「FrameLayout」要素のみが含まれています。

その'onCreate'メソッドで、フラグメントを動的にロードします。

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        UsersListFragment fragment = new UsersListFragment();

        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.add(R.id.fragment_container, fragment);
        ft.commit();
}

あるイベントで、私のフラグメントはアクティビティに戻って通信し、別のフラグメントをインスタンス化して、それにデータを渡す必要があります。アクティビティでは、フラグメントによって呼び出される特別なインターフェイスを実装することでそれを行います。次のようになります。

@Override
public void onUserSelected(long userId) {

        UserDetailsFragment fragment = new UserDetailsFragment();

        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fragment_container, fragment);
        ft.addToBackStack(null);
        ft.commit();

        fragment.updateUser(userId);
}

その結果、「fragment.updateUser(userId);」アーリーへの道と呼ばれます(フラグメントはまだ初期化されておらず、アクティビティにアタッチされていません)。

質問:データをフラグメントに渡す適切な方法は何ですか?

よろしくお願いします。どんな考えでも大歓迎です。

PSフラグメントをロードする方法を示す例をたくさん見ましたが、データを渡す方法を示す例を見つけることができませんでした...

4

1 に答える 1

1

それは通常私に起こります:一度質問を書いたら、私は試すべき新しいアイデアを得ました...

可能なオプションの1つは、「setArguments」メソッドを介してデータを設定してデータを渡すことであり、「onCreateView」フラグメントメソッドで使用することです。

より良いオプションはありますか?

于 2013-03-16T21:50:59.560 に答える