【发布时间】:2012-11-26 00:31:43
【问题描述】:
首先,我使用 FragmentStatePagerAdapter 为 ViewPager 提供要显示的片段。
当应用处于运行状态时(即在onResume()之后),在ViewPager上调用setAdapter总是会起作用并使我的ViewPager刷新,适配器中的getItem(int position)方法被调用。
但是在方向改变之后,如果我在我的活动的onCreate(Bundle savedInstance) 方法中调用setAdapter,getItem(int position) 方法不会被调用,并且旧片段被重用。
我在想也许 FragmentManager 正在做一些我不明白的事情?片段管理器是唯一不会在方向更改期间被破坏的东西。
谢谢
【问题讨论】:
-
问题是 SavedState。我有同样的问题,但没有解决方案。您可以尝试以下操作:在设置适配器之前调用 adapter.saveState,然后设置适配器并使用保存的状态调用 restoreSavedState。就我而言,它没有帮助,但也许对你有用。原因:在 ViewPager setAdapter 中它保存了当前状态并重用它。 (我认为)
-
在这里找到正确答案:stackoverflow.com/questions/13910826/…
-
这会导致内存泄漏吗?许多人说确实如此。任何其他解决方案如何处理这种情况?
-
太棒了,感谢您的回复。终于解决了。。
标签: android adapter android-viewpager