【发布时间】:2014-05-27 13:53:44
【问题描述】:
我有一个带有 3 个选项卡和 3 个片段的 viewpager 的活动,每个选项卡内都有一个片段。我知道片段管理器存储片段的初始实例,因此如果我从一个选项卡滑开然后返回该选项卡,它会加载到内存中并且不会对其应用任何更新。
我需要相反的情况发生,即:每次我滑动到一个选项卡时,都需要加载该选项卡中片段的一个新实例,以便更新数据。
我试过了:
- 在 onTabSelected 中分离附加片段(没有任何反应)
- 在 onTabSelected 中删除添加片段(没有任何反应)
- setOffscreenPageLimit(0)(什么都没有发生)
- 刷新功能 在要调用 onTabSelected 的每个片段内(给出 nullPointerException)
我已经为这个问题苦苦挣扎了一周,没有任何进展。我感谢任何帮助,无论是提示、评论还是建议。
让我知道我应该发布什么代码,谢谢。
【问题讨论】:
-
尝试在ViewPager的onPageSelected中调用每个fragment里面写的刷新函数。确保不要在 onPageSelected 中创建新片段。重用 ViewPager 创建的现有片段
-
好的。我想我现在对这个问题有了更好的了解。我正在使用 FragmentPagerAdapter。我使用 getItem 方法返回片段的新实例。我需要获取当前存在的片段。问题是我必须使用 findFragmentById 或 findFragmentByTag。但我不确定如何在实例化时使用 getItem 设置 id 或标记,以便我可以在 onPageSelected 中检索它。 FragmentPagerAdapter 使用 getItem 设置片段,所以我不知道如何使用 FragmentTransaction 以编程方式设置标签或 id。
标签: android android-fragments tabs android-viewpager