我在应用程序中使用 android.support.v4.view.ViewPager
。
当用户旋转屏幕时, Activity 被销毁并重新创建。 ViewPager
中当前处于 Activity 状态的 fragment (通常是屏幕上的 fragment 、左侧的 fragment 和右侧的 fragment )都存储到 savedInstanceState
.
创建一个新 Activity ,使用 fragment 状态调用 FragmentActivity.onCreate(savedInstanceState)
,然后使用 bundle 重新创建这三个 fragment 。但是,我的 onCreate
还设置了 ViewPager
和 ViewPager
适配器,它们重新创建自己的 fragment ,从而导致这三个中的每一个都有两个 fragment 。
如何将自动重新创建的 fragment 与我的 ViewPager
的适配器相关联,而不是从头开始重新创建它们?
最佳答案
没关系。看来我错误地使用了 FragmentPagerAdapter
。
使用 FragmentPagerAdapter
的正确方法是在 getItem()
中实例化您的新 fragment 。相反,我在适配器的构造函数中实例化了我的所有 fragment ,将它们存储在一个数组中,然后在数组中查找它们并在 getItem()
中返回适当的 fragment 。
如果您从 getItem()
实例化 fragment ,则 FragmentPagerAdapter.instantiateItem()
将自动使用回收 fragment 而不是实例化新 fragment 。
关于android - 使用ViewPager时如何处理savedInstanceState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10729246/