【发布时间】:2014-12-29 21:29:56
【问题描述】:
我有一个 ViewPager。它有片段。创建这些片段时,它们会从服务器加载数据。当用户选择一个菜单项时,我想告诉这些片段过滤它们的数据而不从服务器重新加载。
为此,我有一个 FragmentPagerAdapter 的子类,它保留一个 List 以在创建每个 Fragment 时保存对它的引用。选择菜单项后,我只需遍历该集合并在每个 Fragment 上调用一个方法。
旋转设备时会出现问题。框架自动将片段恢复到它们的父视图,而不调用我的适配器的 getItem 方法,这意味着我的 List 是空的。
如何在设备旋转时重新填充该列表,或者在不保留列表的情况下获取 ViewPager 的所有子片段的列表?
编辑:需要注意的是,我的 ViewPager 存在于 Fragment 中,并且 Fragment 通过侧面导航菜单进行热交换。换句话说,我的 ViewPager 不属于 Activity,并且存在一些关于 ViewPager 未正确清理其子片段的已知问题,这可能会加剧问题。
【问题讨论】:
-
你可以切换到我的
ArrayPagerAdapter,这样会更容易:github.com/commonsguy/cwac-pager -
我处于无法在此应用程序中包含开源软件的位置。您的解决方案看起来非常好,但我不确定它如何解决我的问题。我在上面添加了编辑。
标签: android android-fragments android-viewpager