迭代ViewPager中所有当前加载的片段

时间:2014-12-29 21:29:57

标签: android android-fragments android-viewpager

我有一个ViewPager。它有碎片。创建这些片段后,它们会从服务器加载数据。当用户选择菜单项时,我想告诉这些片段过滤他们的数据而不从服务器重新加载。

为此,我有一个FragmentPagerAdapter的子类,它保持List在每个Fragment创建时保存对它的引用。当选择菜单项时,我只是遍历该集合并在每个片段上调用一个方法。

旋转设备时出现问题。框架会自动将片段恢复到其父视图,而不调用我的适配器的getItem方法,这意味着我的List是空的。

如何在旋转设备时重新填充该List,或者在不保留列表的情况下获取所有ViewPager的子片段列表?

编辑:重要的是要注意我的ViewPager存在于片段中,并且片段通过侧面导航菜单进行热交换。换句话说,我的ViewPager不归Activity所有,而且有一些已知的问题,关于ViewPager没有正确清理它的子片段,这可能会加剧这个问题。

1 个答案:

答案 0 :(得分:0)

点击此链接Get Current visible fragment in ViewPager

作者基本上提出了两种类似的方法,即在片段创建时附加标签并跟踪它。

getSupportFragmentManager().beginTransaction().add(myFragment, "Some Tag").commit(); 

然后像这样检索标签:

int index = mViewPager.getCurrentItem();
String tag = mPageReferenceMap.get(index);
Fragment myFragment = getSupportFragmentManager().findFragmentByTag(tag);