我在实现一个基于多个ViewPager的设计时遇到了一些困难。
在高层次上,我有一个FragmentActivity,只有一个FrameLayout作为它的内容。我有三个不同的Fragment要显示,所有三个都是全屏的,每次只使用一个。
Fragment 1是一个基本的Fragment,其中包含一些TextView和ImageView。 Fragment 2有一个ViewPager和一个FragmentPagerAdapter,它提供了几个简单的Fragments。 Fragment 3有一个ViewPager和一个FragmentPagerAdapter,它提供了几个简单的Fragments(与Fragment 2不同)
在我的FragmentActivity onCreate()中,我获取FragmentManager并开始一个事务,用Fragment 2的新实例替换我的FrameLayout中的任何内容。
此时一切都按预期工作。 我在Fragment 2中的ViewPager完美地工作。
现在我有一个菜单选项,用Fragment 3的新实例替换了FrameLayout中的Fragment 2。 这也很好地工作。
问题出现在当我尝试用另一个replace事务将Fragment 2放回到FrameLayout中时。 我看到我的PagerIndicater在顶部,但我的页面是空白的。
我尝试了只创建Fragment 2的一个新实例并调用replace事务。 当我调用replace之前,在我的Fragments上设置标签并添加一个findFragmentByTag检查,而不是创建一个新实例。 两种方法都给我相同的结果,在第二次replace之后出现了空白页面。
供参考: 我的第一个设计只是一个有ViewPager和ViewIndicater的FragmentActivity。我只有来自上述描述的Fragment 2和Fragment 3以及一个菜单选项可以在它们之间切换。 为了切换,我定义了2个不同的FragmentPagerAdapter,并调用ViewPager.setAdapter来设置所选的FragmentPagerAdapter。 这完美地工作,但现在我需要一个新的顶级Fragment根本不使用ViewPager。 这就是为什么我决定将我的ViewPagers移动到它们自己的Fragments中。 我的想法是只需将我的Fragments替换到FrameLayout中即可。
我现在没有我的代码,所以无法发布任何内容。明天我会添加一些代码到我的问题中,以帮助方便回答。