[英]Fragment backstack issue
我目前正在尝试通过导航抽屉创建应用程序导航。 所以我可以从抽屉打开A1 / B1 / C1碎片。 它们在我的容器视图中互相替换,因此backstack应该是空的。 我在抽屉选择中使用此代码:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, fragmentToShow, null)
.commit();
从A1我可以去A2 。 A2 -fragment应该添加在同一个容器中。 对于这种情况:
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.container, fragment, null).addToBackStack(null).commit();
在backstack中应该有1个片段。
这一切都有效,但有一个问题。 如果我多次打开导航抽屉并试图再次打开A1 , A1到A2来回然后再按下后退按钮从A1我崩溃异常:
java.lang.IllegalStateException: Fragment already added
在onBackPressed
我的活动我有:
int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount();
if (backStackEntryCount > 0) {
getSupportFragmentManager().popBackStackImmediate();
} else {
finish();
}
当它不应该时,backStackEntryCount大于0。
你能给我一些思考点吗? 我哪里错了? 提前致谢。
我认为你在调用replace时应该为你的片段添加一个标签。 如果这还不够,您可以在调用replace之前尝试删除片段(通过其标记)
另外,为什么不在第一次通话时调用addToBackStack?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.