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

Android 迭代ViewPager中当前加载的所有片段,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我有一个寻呼机。它有碎片。创建这些片段时,它们从服务器加载数据。当用户选择一个菜单项时,我想告诉这些片段在不从服务器重新加载的情况下过滤数据 为此,我有一个子类FragmentPagerAdapter,它保存一个列表,在创建每个片段时保存对其的引用。当选择菜单项时,我只需迭代该集合并对每个片段调用一个方法 旋转设备时会出现问题。框架自动将片段恢复到它们的父视图,而不调用适配器的getItem方法,这意味着我的列表是空的 如何在设备旋转时重新填充该列表,或在不保留列表的情况下获取ViewPager

我有一个寻呼机。它有碎片。创建这些片段时,它们从服务器加载数据。当用户选择一个菜单项时,我想告诉这些片段在不从服务器重新加载的情况下过滤数据

为此,我有一个子类FragmentPagerAdapter,它保存一个列表,在创建每个片段时保存对其的引用。当选择菜单项时,我只需迭代该集合并对每个片段调用一个方法

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

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

编辑:可能需要注意的是,我的ViewPager存在于一个片段中,该片段通过侧导航菜单进行热交换。换句话说,我的ViewPager不属于某个活动,并且ViewPager存在一些已知问题,即没有正确清理其子片段,这可能会加剧问题。

检查此链接

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

getSupportFragmentManager().beginTransaction().add(myFragment, "Some Tag").commit(); 
然后检索标记,如下所示:

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

您可以切换到我的
ArrayPagerAdapter
,这样做会更容易:我的应用程序中不能包含开源软件。你的解决方案看起来很不错,但我不确定它是如何解决我的问题的。我在上面添加了编辑。