使用ViewPager时如何处理savedInstanceState?

时间:2012-05-23 23:25:25

标签: android android-fragments

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

当用户旋转屏幕时,活动将被销毁并重新创建。 ViewPager中当前活动的片段(通常是屏幕上的片段,左侧的片段和右侧的片段)都存储在savedInstanceState中。

创建一个新活动,使用片段状态调用FragmentActivity.onCreate(savedInstanceState),并使用该包重新创建这三个片段。但是,我的onCreate也会设置ViewPagerViewPager适配器,它们会重新创建自己的片段,从而导致这三个片段中的每一个都有两个。

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

1 个答案:

答案 0 :(得分:18)

没关系。我似乎错误地使用了FragmentPagerAdapter

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

如果您从getItem()实例化您的片段,那么FragmentPagerAdapter.instantiateItem()将自动使用循环片段而不是实例化新片段。