在竖屏模式下,我的ViewPager有3个片段A、B、C,但在横屏模式下,它只有2个片段A和C。因此,我为每种模式创建了两个FragmentStatePagerAdapter。问题是当屏幕方向改变时,ViewPager会恢复并使用旧方向的先前片段。例如,从纵向到横向旋转时,ViewPager现在显示2个片段A、B而不是A和C。我知道为什么会发生这种情况,但找不到一个好的解决方案。
我的当前解决方法是为ViewPager使用不同的id(例如:id/viewpager_portrait用于纵向,id/viewpager_landscape用于横向布局),以防止重用片段,但这会导致内存泄漏,因为旧片段不会被销毁,仍然保存在内存中。
我尝试了一些解决方法,比如在activity的onCreate中调用super.onCreate(null),或者在activity的onSaveInstanceState中删除ViewPager的片段,但它们都会使我的应用程序崩溃。
所以我的问题是,在方向改变时如何避免在FragmentStatePagerAdapter中重新使用一个或多个片段?
任何帮助将不胜感激。提前感谢。
我的当前解决方法是为ViewPager使用不同的id(例如:id/viewpager_portrait用于纵向,id/viewpager_landscape用于横向布局),以防止重用片段,但这会导致内存泄漏,因为旧片段不会被销毁,仍然保存在内存中。
我尝试了一些解决方法,比如在activity的onCreate中调用super.onCreate(null),或者在activity的onSaveInstanceState中删除ViewPager的片段,但它们都会使我的应用程序崩溃。
所以我的问题是,在方向改变时如何避免在FragmentStatePagerAdapter中重新使用一个或多个片段?
任何帮助将不胜感激。提前感谢。
onSaveInstanceState
方法并避免在该方法中调用super.onSaveInstanceState
吗?这将防止Fragment
被保存。 - Manish Mulimani