我有一个奇怪的" bug"在我的应用程序中这是建筑: 我们有一个带有几个片段的NavigationDrawer(就像每个应用程序一样)。一些片段(例如Canteen-Frag)包含带有FragmentPagerAdapter的ViewPager。众所周知,ViewPager是懒惰的,只创建了可见片段以及他的邻居。
现在,问题出在这里: 如果我们打开Canteen-Frag,使用后退按钮导航并再次打开News-Frag,可见的碎片以及邻居都消失了。
您可以在此处查看主视图:https://lh5.ggpht.com/0KJCniup8zvFk05QAtzeQpoClKZnaSzaPepgeLwsToPNmTGJnRRj31PLhumw_DGD2Q=h900-rw
这里的食堂:https://lh5.ggpht.com/81EnVDrlqONgE0V1i5UDw3c2cbEJcMZ0PLX0zB_syBeawHWQ5OfLtpeapZqAHRhZ2w=h900-rw
(两者都是" myHHU" -App)的Playstore的图像链接
大家都知道,为什么ViewPager或FragmentPagerAdapter会缓冲他的状态,即使我从未为此目的编写代码?我知道,如果没有我的代码,这很难回答,但应用程序更大(它是杜塞尔多夫的官方大学应用程序)。
如果有人需要更多信息,请写/问:)
THX。
答案 0 :(得分:0)
幸运的是答案在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);
}
}