私のアクティビティには「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フラグメントをロードする方法を示す例をたくさん見ましたが、データを渡す方法を示す例を見つけることができませんでした...