我的活动仅包含“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我已经看到了很多展示如何加载片段的示例,但无法找到那些展示如何传递数据的示例......