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

这通常发生在我身上:一旦写了一个问题,我就有了一个新的想法来尝试......

看起来可能的选项之一是通过“setArguments”方法设置数据来传递数据......并在“onCreateView”片段方法期间使用......

有更好的选择吗?

于 2013-03-16T21:50:59.560 回答