繁体   English   中英

使用FragmentPagerAdapter还原片段

[英]Restoring a fragment using FragmentPagerAdapter

我有一个使用两个选项卡的应用程序,两个选项卡均包含片段。 我正在使用FragmentPagerAdapter来管理选项卡更改。 两个标签都可以正常工作。

我最近添加了第三个标签,遇到了一些麻烦。 tab1(fragment1)是小片段的LinearLayout。 tab2(fragment2)是文本的简单布局。 tab3(fragment3)也是文本的简单布局。

如果我在tab1和tab2之间切换,则它们都可以正常工作并保持其状态。 但是,如果我在tab1和tab3之间切换,则tab3正确显示文本,而tab1显示空白标签。

我知道,如果一个选项卡比当前位置偏离1个以上的位置,则该片段将被销毁,并且需要重新创建该片段。 FragmentPagerAdapter不会自动执行此操作吗?

我发现如果旋转设备(选择了tab1),则tab1片段将以其正确状态恢复,因此该片段不会被破坏。 看来ViewPager无法正确重新创建布局存在问题,但这只是一个猜测。

作为解决方法,我设置了myViewPager.setOffscreenPageLimit(2)并保留了布局。 我想让它按我认为的那样工作,而不会强迫片段保留在内存中。

setRetainInstance(true);

在片段的onCreateView方法中

阅读setOffScreenPageLimit()的文档,使我认为您的方法很好。 看这个:

如果您只有很少的页面(3-4)可以一次全部保持活动状态,则随着用户来回翻页,新创建的视图子树的布局将花费更少的时间。

您应将此限制保持在较低水平,尤其是在页面布局复杂的情况下。

我很好奇setRetainInstance(true)是否可以工作,因为是由适配器决定重新创建片段,而不是在某些Android更改配置操作中重新创建片段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM