我的应用程序中有一个奇怪的"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的官方大学应用程序)。
如果有人需要更多信息,请写/问:)
谢谢。
发布于 2015-04-05 16:28:49
幸运的是,答案在Remove Fragment Page from ViewPager in Android中:)
问题是,FragmentManager本身保存了旧的片段,所以我们必须“操作”这些片段的ID :)
另外,由于内存问题,我们应该清除后端堆栈。下面是一个示例:
@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);
}
}https://stackoverflow.com/questions/29444049
复制相似问题