当使用ViewPager时如何处理savedInstanceState?

12

我在一款应用程序中使用了 android.support.v4.view.ViewPager

当用户旋转屏幕时,活动将被销毁并重新创建。目前在 ViewPager 中处于活动状态的片段(通常是屏幕上的一个,其左侧的一个以及其右侧的一个)都保存在 savedInstanceState 中。

创建一个新的活动,使用带有片段状态的 bundle 调用 FragmentActivity.onCreate(savedInstanceState) 方法,然后使用该 bundle 重新创建那三个片段。然而,我的 onCreate 还设置了 ViewPagerViewPager 适配器,它们会自己刷新片段,从而导致每个这三个片段都重复创建两次。

如何将自动重新创建的片段与我的 ViewPager 适配器关联起来,而不是从头开始重新创建它们?

1个回答

18

没关系。看来我错误地使用了FragmentPagerAdapter

正确使用FragmentPagerAdapter的方式是在getItem()中实例化新片段。我之前是在适配器的构造函数中实例化所有片段,然后将它们存储在数组中,并在getItem()中查找并返回适当的片段。

如果从getItem()实例化片段,那么FragmentPagerAdapter.instantiateItem()会自动使用回收的片段而不是实例化一个新的片段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接