android - 如何告诉我的自定义 FragmentPagerAdapter 停止销毁我的 Fragment?

标签 android android-fragments android-viewpager

我有一个带有 FragmentPagerAdapter 的 ViewPager,而我的应用以前只使用了两个 fragment (不同类型)而没有问题。

不过,我刚刚添加了第三个 fragment ,现在当我远离它们时,我的适配器/viewpager 似乎正在破坏我的 fragment 。例如,如果我在第 1 页,当我接近第 3 页时,它会被破坏并重新创建。如果我在第 3 页,第 1 页也是如此。

这导致我的应用出现很多问题。这些 fragment 根本不是很重的 RAM,那么我怎样才能阻止这种情况发生呢?

最佳答案

相信您正在寻找ViewPager.setOffscreenPageLimit() .

在您的情况下,以下内容应将您的 fragment 保存在内存中而不是销毁它们。

ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setOffscreenPageLimit(2);

但是,我怀疑您在销毁时没有正确存储 View 状态。您的 fragment 应正确处理被销毁/重新创建。例如,如果发生方向更改,您的 fragment 也会被销毁并重新创建。如果用户离开您的应用程序并且系统稍后需要内存并破坏您的 Activity ,也可能发生这种情况。它应该能够重新打开并处于与以前相同的状态。如果这确实是您的问题,请考虑将状态保存在 onSaveInstanceState() .保存的状态会在onCreate中呈现给你您可以在其中将 fragment 的状态初始化为与被破坏的相同。

关于android - 如何告诉我的自定义 FragmentPagerAdapter 停止销毁我的 Fragment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273285/

相关文章:

android - 原生 actionbar.show() 和 hide() 动画的时长是多少

android - 如何使用 jCIFS 使用默认查看器在 Android 中打开文件

java - Realm.io 无法让示例正常工作

android - 如何在android中的 ScrollView 中设置 GridView 和 View 寻呼机?

Android ViewPager 显示白屏

android - Viewpager 与 SwipeRefreshLayout 刷新时图标不会消失

Android 内存不足问题

android - 在 FragmentStatePagerAdapter 的 instantiateItem() 中实现 setTag() 和 findViewWithTag()

java - fragment 上的自定义 GridView 上的 NullPointerException

android - 根据编译器、Android 的说法,FragmentTransaction 对象的实例化是不可能的