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