【发布时间】:2014-01-02 14:51:57
【问题描述】:
根据 Android 指南,http://developer.android.com/training/basics/fragments/communicating.html 一个片段应通过托管 Activity 将数据发送到另一个片段。我想知道这是有原因的。 因为在我的代码中,我放置了一个变量来保存指向另一个片段的指针,并在 onActivityCreated 中分配它
//this code is in class FragmentType1, assign the pointer to the FragmentType2 for later use
@Override
public void onActivityCreated(final Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
final FragmentManager fm = getFragmentManager();
mOtherFragment = (FragmentType2) fm
.findFragmentById(R.id.container_fragment);
}
以后如果我想为 FragmentType2 设置数据,我只需调用:
public setData(MyData data){
if (mOtherFragment!=null)
mOtherFragment.setData(data);
}
现在一切正常。这种方法有什么问题?谢了。
【问题讨论】:
-
这是因为我们正在尝试解耦事物,并且可能会在其他地方重用这些片段。