我有AppleActivity,它启动了OrangeFragment,后者又启动了BookChildFragment。我在OrangeFragment里面有一个名为Object myObj
的变量,我希望在BookFragment中继续使用它。 (BookFragment仅填充OrangeFragment布局内的子视图)。有谁知道这是怎么做到的吗?我正在使用支持库,当然还有getChildFragmentManager()
答案 0 :(得分:1)
有几种可能性,但这里有一种:
您的Object myObj
应该从Parcelable
延伸(在API说明中,您会发现Parcelable
的典型实施方式。)
现在,您可以将带有myObj
的{{1}}从OrangeFragment转移到BookFragment,如下所示:
Bundle
答案 1 :(得分:0)
myObj
时, owe's answer就会很好。如果您希望myObj
可以修改,那么您可以使用以下简单的解决方案:
class BookFragment extends Fragment {
...
private void someMethod() {
OrangeFragment myFragment =
(OrangeFragment)getActivity().getFragmentManager().findFragmentById(R.id.orangeFragmentId);
myFragment.setMyObj(null);
}
}
class OrangeFragment extends Fragment {
...
public Object getMyObj() {
return myObj;
}
public void setMyObj(Object o) {
myObj = o;
}
}
但如果你想要更灵活的解决方案,我建议使用LocalBroadcastManager
。