清空Fragment回退棧中某個Fragment之上的所有Fragment


根據debug信息查看Fragment回退棧的情況,具體debug代碼如下:

int num = getActivity().getSupportFragmentManager().getBackStackEntryCount();
String numString = "++++++++++++++++++++++++++++++++++Fragment回退棧數量:"+num;
TALogger.d("Fragment", numString);
for (int i = 0; i < num; i++) {
    BackStackEntry backstatck = getActivity().getSupportFragmentManager().getBackStackEntryAt(i);
    TALogger.d("Fragment", backstatck.getName());
}

debug結果截圖如下:

最后一步是調用:

getActivity().getSupportFragmentManager().popBackStackImmediate(CreateGroupNameFragment.class.getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);

即彈出Tag為CreateGroupNameFragment之上的所有(包括自身)的Fragment。

popBackStackImmediate(name,flag);

第二個參數:只能是 0 或者 1(POP_BACK_STACK_INCLUSIVE);

第一個參數為null時,第二個參數為0時:

會彈出回退棧中最上層的那一個fragment。

因為經測試,回退棧中的fragment個數減少了一個。

第二個參數為1時:

會彈出所有回退棧中的fragment。

因為經測試,回退棧中的fragment個數變為0了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM