簡體   English   中英

片段后台堆棧問題

[英]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個片段。

這一切都有效,但有一個問題。 如果我多次打開導航抽屜並試圖再次打開A1A1A2來回然后再按下后退按鈕從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM