2

请先查看线框图片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以查找与嵌套片段相关的问答,但没有得到我想要的。

那么,这有可能实现吗?如果是,那怎么办?

4

1 回答 1

1

这在 Android 4.2 之前是个大问题,但现在嵌套片段似乎更容易,除了确保后退按钮有效。我在这里发布了我对您的问题的解决方案:https ://stackoverflow.com/a/13925130/467509

除了更改 ActionBar 之外,我的解决方案回答了您提出的所有问题。

于 2012-12-18T01:51:58.723 回答