【发布时间】:2013-09-21 17:29:51
【问题描述】:
问题
根据 Google 的文档:
您现在可以在片段中嵌入片段。这对于一个有用的 您希望在其中放置动态和可重用的各种情况 将 UI 组件转换为本身是动态的 UI 组件 可重复使用的。例如,如果您使用 ViewPager 创建片段 左右滑动并占用大部分屏幕空间,你 现在可以将片段插入每个片段页面。 要嵌套片段,只需在要添加片段的片段上调用 getChildFragmentManager()。这会返回一个 您可以像往常一样使用的 FragmentManager 创建片段事务的顶级活动。例如, 这是一些从现有片段中添加片段的代码 类:
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 嵌套片段的好示例,请与我分享链接。非常感谢您的帮助。
【问题讨论】:
标签: android android-fragments android-viewpager fragmentmanager android-nested-fragment