我有一个使用两个选项卡的应用程序,都包含片段 . 我正在使用FragmentPagerAdapter来管理选项卡更改 . 一切正常,有两个标签 .
我最近添加了第三个选项卡,我遇到了一些麻烦 . tab1(fragment1)是一个小片段的LinearLayout . tab2(fragment2)是一个简单的文本布局 . tab3(fragment3)也是一个简单的文本布局 .
如果我在tab1和tab2之间切换都能正常工作并保持其状态 . 但是,如果我在tab1和tab3之间切换,tab3正确显示文本,但tab1显示空白选项卡 .
我知道如果一个标签超出当前位置的1个位置,则该片段将被销毁,并且需要重新创建该片段 . FragmentPagerAdapter
不会自动执行此操作吗?
我发现如果我旋转设备(选择了tab1),tab1片段将以正确的状态恢复,因此片段不会被破坏 . 似乎有一个问题, ViewPager
没有正确地重新创建布局,但这只是猜测 .
作为一种解决方法,我设置 myViewPager.setOffscreenPageLimit(2)
并保留布局 . 我想让它工作,因为我认为它应该没有强制片段留在内存中 .
2 回答
读取setOffScreenPageLimit()的文档,让我觉得你的方法很好 . 看这个:
我很好奇,如果setRetainInstance(true)可以工作,因为它是适配器谁决定重新创建一个片段,而不是在一些Android更改配置操作期间重新创建它 .
加
在
onCreateView
片段的方法