如何将数据传递到动态加载到当前活动中的片段

时间:2013-03-16 21:48:09

标签: android android-fragments

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

1 个答案:

答案 0 :(得分:1)

这通常发生在我身上:曾经写过一个问题,我有一个新想法试试......

看起来可能的选项之一是通过'setArguments'方法设置它们来传递数据 ...并在'onCreateView'片段方法中使用...

有更好的选择吗?