[英]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.