问题
根据 Google 文档:
现在,您可以在片段内嵌入片段。这对于许多情况非常有用,例如,当您想将动态和可重复使用的 UI 组件放置到本身是动态且可重复使用的 UI 组件中时。例如,如果您使用 ViewPager 创建滑动左右并占据大部分屏幕空间的片段,现在可以将片段插入每个片段页面。 要嵌套一个片段,只需在要添加片段的片段上调用 getChildFragmentManager() 方法。 这将返回一个 FragmentManager,您可以像从顶级活动中创建片段事务一样使用它。 例如,下面是一些代码,它会从现有 Fragment 类中添加一个片段:
Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();
所以我有一个(例如)TestFragment
,它看起来像:public class TestFragment extends Fragment {
private View mFragmentView;
private FrameLayout mFrameLayout;
public HistoryFragment() {
super();
}
@Override
public View onCreateView(LayoutInflater pInflater, ViewGroup pViewGroup, Bundle pBundle) {
mFragmentView = pInflater.inflate(R.layout.fragment_layout, pViewGroup, false);
mFrameLayout = (FrameLayout) mFragmentView.findViewById(R.id.framelayout);
return mFragmentView;
}
public void onDestroyView() {
super.onDestroyView();
}
/* ISSUE */
public void doSomethingSpecial() {
FragmentManager tFragmentManager = getChildFragmentManager();
}
}
在MainActivity
中,我这样初始化我的片段:
mTestFragment = new TestFragment();
mTestFragment.doSomethingSpecial();
然后,我通过 FragmentPagerAdapter
将该片段传递给 ViewPager
。
最后,我得到了一个异常。但是如果我只使用:
mTestFragment = new TestFragment();
然后它就能正常工作了。
问题
在我的碎片中应该在哪里调用getChildFragmentManager()
方法?我做错了什么?
如果您有新的Android嵌套碎片的好例子,请与我分享链接。我非常感谢您的帮助。