首页 文章

使用FragmentPagerAdapter恢复片段

提问于
浏览
0

我有一个使用两个选项卡的应用程序,都包含片段 . 我正在使用FragmentPagerAdapter来管理选项卡更改 . 一切正常,有两个标签 .

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

如果我在tab1和tab2之间切换都能正常工作并保持其状态 . 但是,如果我在tab1和tab3之间切换,tab3正确显示文本,但tab1显示空白选项卡 .

我知道如果一个标签超出当前位置的1个位置,则该片段将被销毁,并且需要重新创建该片段 . FragmentPagerAdapter 不会自动执行此操作吗?

我发现如果我旋转设备(选择了tab1),tab1片段将以正确的状态恢复,因此片段不会被破坏 . 似乎有一个问题, ViewPager 没有正确地重新创建布局,但这只是猜测 .

作为一种解决方法,我设置 myViewPager.setOffscreenPageLimit(2) 并保留布局 . 我想让它工作,因为我认为它应该没有强制片段留在内存中 .

2 回答

  • 0

    读取setOffScreenPageLimit()的文档,让我觉得你的方法很好 . 看这个:

    如果您有少量页面(3-4)可以一次保持活动状态,那么当用户来回翻页时,新创建的视图子树的布局花费的时间会更少 . 您应该将此限制保持在较低水平,尤其是在页面具有复杂布局的情况下 .

    我很好奇,如果setRetainInstance(true)可以工作,因为它是适配器谁决定重新创建一个片段,而不是在一些Android更改配置操作期间重新创建它 .

  • 0

    setRetainInstance(true);
    

    onCreateView 片段的方法

相关问题