首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FragmentPagerAdapter保存了他的状态,但它不应该保存

FragmentPagerAdapter保存了他的状态,但它不应该保存
EN

Stack Overflow用户
提问于 2015-04-04 15:55:16
回答 1查看 52关注 0票数 0

我的应用程序中有一个奇怪的"bug“。结构是这样的:我们有一个包含多个片段的NavigationDrawer (就像每个应用程序一样)。一些片段(例如,食堂-冰糖)包含一个带有FragmentPagerAdapter的ViewPager。众所周知,ViewPager很懒,只创建了可见的片段,就像他的邻居一样。

现在,问题来了:如果我们打开食堂-Frag,用back按钮导航回来,然后再次打开News-Frag,可见的碎片以及邻居都会消失。

您可以在此处看到主视图:https://lh5.ggpht.com/0KJCniup8zvFk05QAtzeQpoClKZnaSzaPepgeLwsToPNmTGJnRRj31PLhumw_DGD2Q=h900-rw

这里的食堂:https://lh5.ggpht.com/81EnVDrlqONgE0V1i5UDw3c2cbEJcMZ0PLX0zB_syBeawHWQ5OfLtpeapZqAHRhZ2w=h900-rw

(两者都是“myHHU”-App的playstore的图像链接)

每个人都知道为什么ViewPager或FragmentPagerAdapter会缓冲他的状态吗,即使我从来没有写过这样的代码?我知道,这里没有我的代码,这很难回答,但应用程序更大(它是duesseldorf的官方大学应用程序)。

如果有人需要更多信息,请写/问:)

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-04-05 16:28:49

幸运的是,答案在Remove Fragment Page from ViewPager in Android中:)

问题是,FragmentManager本身保存了旧的片段,所以我们必须“操作”这些片段的ID :)

另外,由于内存问题,我们应该清除后端堆栈。下面是一个示例:

代码语言:javascript
复制
@Override
public void onPause() {
    clearBackStack();
    super.onPause();
}

private void clearBackStack() {
    FragmentManager manager = getFragmentManager();
    if (manager.getBackStackEntryCount() > 0) {
        FragmentManager.BackStackEntry first = Manager.getBackStackEntryAt(0);
        manager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29444049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档