我的活动仅包含“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);”被称为早期的方式(片段尚未初始化,它不附加到活动)。
问题:将数据传递到片段的正确方法是什么?
提前多多感谢。非常感谢任何想法。
P.S。我已经看过很多展示如何加载片段的例子,但却找不到那些展示如何传递数据的例子......
答案 0 :(得分:1)
这通常发生在我身上:曾经写过一个问题,我有一个新想法试试......
看起来可能的选项之一是通过'setArguments'方法设置它们来传递数据 ...并在'onCreateView'片段方法中使用...
有更好的选择吗?