请先查看线框图片http://i.imgur.com/dPAMA.png。
我正在使用 ViewPager 在 FragmentActivity 中显示片段。ViewPager 从附加的 FragmentPagerAdapter 获取片段
mViewPager = (ViewPager) findViewById(R.id.view_pager);
mAdapter = new HomePagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mAdapter);
假设 viewpager 有 3 个片段要显示,比如 Fragment1、Fragment2、Fragment3。在上图中,“显示片段 1”是第一个片段的标题“片段 1”。这个片段是一个列表片段并显示一个列表。Fragment2 和 Fragment3 有自己的内容要显示。当用户在屏幕上滑动时,ViewPager 将显示下一个片段“Fragment2”。
我想要的是,当单击列表中的一个项目(由 Fragment1 显示)时,Fragment1 应该被其他一些 Fragment 完全替换,比如 Fragment4(这是不同的 Fragment,不会由附加的适配器返回)。当显示 Fragment4 时,操作栏应更改其内容。每当用户使用 Fragment4 和 onBackPress 或来自 ActionBar 的操作时,应再次显示带有列表的 Fragment1。同时 ViewPager 应该表现相同,即在滑动时,下一个片段(在我们的例子中是 Fragment2)将被显示。
基本上,我想获得与示例中相同的行为:
http://developer.android.com/training/basics/fragments/fragment-ui.html#Replace
在此示例中,ListFragment 直接显示在 FragmentActivity 中。我正在使用 ViewPager 显示 ListFragment。我想要与上面示例相同的功能,但在 ViewPager 显示的片段内部。这在 Android 4.2 发布之前很难实现。这个版本的 android 支持使用这样的嵌套片段getChildFragmentManager()
,我看到了一些希望。
我在我身边尝试了很多天,还扫描了整个stackoverflow以查找与嵌套片段相关的问答,但没有得到我想要的。
那么,这有可能实现吗?如果是,那怎么办?