我在实现一个基于多个ViewPagers的设计时遇到了一些麻烦。
在较高的级别上,我有一个只有一个FrameLayout作为内容的FragmentActivity。我有3个不同的片段想要展示。所有3个都是全屏的,一次只有1个会被使用。
片段1是具有一些TextViews和ImageViews的基本片段。片段2有一个ViewPager和一个FragmentPagerAdapter,为它提供几个简单的片段。片段3有一个ViewPager和一个FragmentPagerAdapter,为它提供几个简单的片段(与片段2不同)
在我的FragmentActivity onCreate()中,我获取FragmentManager并开始一个事务,用片段2的一个新实例替换我的FrameLayout中的任何内容。
在这一点上,一切都像预期的那样工作。我在片段2中的ViewPager工作得很好。
现在我有了一个菜单选项,可以用片段3的新实例替换FrameLayout中的片段2。
当我试图用另一个替换事务将片段2放回FrameLayout中时,问题就出现了。我看到我的PagerIndicater在顶部,但我的页面是空白的。
我只尝试创建片段2的一个新实例,并调用一个替换事务。我还尝试在调用replace时在片段上设置标签,并在replace之前添加findFragmentByTag检查,而不是创建新实例。在第二次替换后,这两个页面都得到了相同的空白页面结果。
作为参考,我的第一个设计是一个简单的带有ViewPager和ViewIndicater的FragmentActivity。我只有上面描述的片段2和片段3,以及一个在它们之间切换的菜单选项。为了切换,我定义了两个不同的FragmentPagerAdapters,并且只调用ViewPager.setAdapter来设置所选的FragmentPagerAdapter。这是完美的工作,但现在我需要一个新的顶级片段,它根本不使用ViewPager。这就是为什么我决定将我的ViewPagers移到它们自己的片段中。我的想法是,我只需将我的片段交换到一个FrameLayout。
我现在没有我的代码,所以我不能发布任何代码,但我明天会在我的问题中添加一些代码,以帮助方便回答。
发布于 2013-09-27 04:43:06
这个问题可能是Navigating back to FragmentPagerAdapter -> fragments are empty的重复。
如果你的应用程序可以处理它(API17),就使用getChildFragmentManager()。在使用片段托管ViewPager和使用FragmentPagerAdapter时,似乎会出现此问题。更改为FragmentStatePagerAdapter似乎也解决了这个问题,但我仍然认为使用getChildFragmentManager()是最明智的做法。
发布于 2012-12-18 05:22:28
烤肉你可以用不“好办法”。但对我来说,它是有效的。
您可以在视图2布局中使用,您可以在其中绑定片段。First - for fragment with fragmentsSecond -用于其他片段。
在用片段替换片段时,不替换,而只是将可见性第一布局更改为消失,并将新片段添加到第二布局。在背面,从第二个布局中删除片段,并将第一个布局的可见性设置为可见。
https://stackoverflow.com/questions/12063802
复制相似问题