android - 使用ViewPager时如何处理savedInstanceState?

标签 android android-fragments

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

当用户旋转屏幕时, Activity 被销毁并重新创建。 ViewPager 中当前处于 Activity 状态的 fragment (通常是屏幕上的 fragment 、左侧的 fragment 和右侧的 fragment )都存储到 savedInstanceState.

创建一个新 Activity ,使用 fragment 状态调用 FragmentActivity.onCreate(savedInstanceState),然后使用 bundle 重新创建这三个 fragment 。但是,我的 onCreate 还设置了 ViewPagerViewPager 适配器,它们重新创建自己的 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/

相关文章:

android - Kotlin 如何调用扩展函数

android - 使用套接字从Android设备连接到PC?

java - Iframe Youtube 视频使用 DialogFragment 显示黑屏,并且 Webview 中仅播放音频

android - 膨胀类 com.andexert.expandablelayout.library.ExpandableLayout 时出错

android - DialogFragment 与 Activity

android - 与删除 fragment 混淆

android - faSTLane 截屏和快照

android - 如何处理super.onCreate中的异常?

android - 在 android 中声明 Intent Filter

android - support-v4 中的 FragmentTransaction 没有 detach()?