Fragment里面的FragmentPagerAdapter

我在实现基于多个ViewPagers的devise时遇到了一些麻烦。

在高层次上,我有一个FrameLayout的FragmentActivity,因为它的内容。 我有3个不同的片段,我想要显示。 所有3个全屏幕,一次只能使用1个。

片段1是一些基本的片段与一些TextViews和ImageViews。 片段2有一个ViewPager和一个FragmentPagerAdapter,为它提供几个简单的片段。 片段3有一个ViewPager和一个FragmentPagerAdapter,为它提供几个简单的片段(与片段2不同)

在我的FragmentActivity onCreate()我得到的FragmentManager和开始一个事务,以取代我的FrameLayout中的一个新的片段2实例。

在这一点上,一切都按预期工作。 我的ViewPager在片段2完美地工作。

现在我有一个菜单选项,用Fragment 3的新实例replace我的FrameLayout中的Fragment 2。

当我尝试用另一个replace事务将Fragment 2放回到FrameLayout中时,问题就出现了。 我看到我的PagerIndicater在顶部,但我的网页是空白的。

我试着创build一个新的我的Fragment 2的实例,并调用一个replace事务。 当我调用replace和在replace之前添加findFragmentByTag检查而不是创build新实例时,我也尝试在我的碎片上设置一个标记。 在我第二次replace之后,两者都给了我相同的空白页的结果。

供参考我的第一个devise只是一个ViewPager和ViewIndicater的FragmentActivity。 我只有我的描述上面的片段2和片段3和一个菜单选项来切换它们。 要切换我有2个不同的FragmentPagerAdapters定义,只是称为ViewPager.setAdapter设置选定的FragmentPagerAdapter。 这是完美的工作,但现在我需要一个新的顶级片段,根本不使用ViewPager。 这就是为什么我决定把我的ViewPage移动到他们自己的片段中。 我的想法是,我只是交换我的片段到FrameLayout。

我现在没有我的代码在我面前,所以我不能发布任何,但我会明天添加一些代码到我的问题,以帮助促进答案。

这个问题是导航回FragmentPagerAdapter的可能重复- >片段是空的 。

如果您的应用程序可以处理它(API 17),请使用getChildFragmentManager() 。 使用Fragment承载ViewPager并使用FragmentPagerAdapter时,似乎会出现此问题。 更改为FragmentStatePagerAdapter似乎也解决了这个问题,但我仍然认为使用getChildFragmentManager()是最聪明的事情。

brockoli你可以使用不“好方法”。 但对于我的工作。

您可以在视图2中使用绑定片段的布局。 首先 – 用碎片碎片。 其次 – 用于其他片段。

在片段replace片段不replace,但只能改变可见性的第一个布局去,并添加新的片段到第二个布局。 在第二个布局中删除片段,并将第一个布局的可见性设置为可见。