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