重新创建ViewPager中的片段

aga*_*mov 6 android fragment android-fragments android-viewpager

我有一个FragmentActivity集装箱,在这里我把FragmentViewPager.在ViewPager我有3 Fragments:

[MainActivity]
    [ViewPagerFragment]
        [Fragment1][Fragment2][Fragment3]
Run Code Online (Sandbox Code Playgroud)

当用户单击Fragment1/ Fragment2/ 上的按钮时Fragment3,我替换了ViewPagerFragmentwith OtherFragment,因此层次结构如下所示:

[MainActivity]
    [OtherFragment]
Run Code Online (Sandbox Code Playgroud)

当我点击Back按钮,ViewPagerFragment重新创建,以及它的嵌套Fragments(Fragment1/ Fragment2/ Fragment3).

有没有办法保存状态ViewPagerFragment及其嵌套片段?这样碎片会保持状态而不会重新创建?

我已经设定setRetainInstance(true)ViewPagerFragment,但似乎没有生效.

Aug*_*cis 17

只需设置: - 参数是ViewPager中的片段数

mViewPager.setOffscreenPageLimit(3);

ViewPager非常热衷于关闭目前没有使用的东西,这正是这里发生的事情.默认行为是ViewPager在要查看的页面的任一侧"保持"一页,并销毁其余页面.因此,在3页视图中,第3页在选择第1页时被破坏,然后在重新选择第2页时重新创建第3页.正如您所注意到的,第2页只有onCreate(..)被调用一次,因为它始终与当前选定的页面相邻或者是当前所选页面.

要解决此问题,只需设置ViewPager.setOffscreenPageLimit(2)即可.然后ViewPager将保留所有碎片.显然这对于​​大量碎片来说不是一个好主意,但对于你的情况,它应该没问题.