需求場景:
在開發(fā)中遇到下面這樣場景:
a.創(chuàng)建 Fragment A 顯示陶珠。 這時棧的結(jié)構(gòu)是:
1.Fragment A
b.創(chuàng)建 Fragment B 并 顯示。 從下到上看疫衩,這時棧的結(jié)構(gòu)是:
2.Fragment B
1.Fragment A
c.創(chuàng)建 Fragment C 并 顯示帽芽。 從下到上看,這時棧的結(jié)構(gòu)是:
3.Fragment C
2.Fragment B
1.Fragment A
那么颅悉,如何從 Fragment C 一次性跳到 Fragment A 呢?
實現(xiàn):
入棧時迁匠,使用方法
addToBackStack(nameForBackstackstate)
傳入了一個參數(shù) name,這是個Fregment的標(biāo)示驹溃,下面還要用到城丧。
代碼:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
String name = fragment.getClass().getName();
fragmentTransaction.replace(R.id.container, fragment).addToBackStack(nameForBackstackstate).commit();
彈出時這么做:
fragmentManager.popBackStackImmediate(FragmentA.class.getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
這個方法的第二個參數(shù)
POP_BACK_STACK_INCLUSIVE
指示了這個彈出行為是 一次性出棧“指定的name的”Fragment 以上的所有 Fragment豌鹤。
參考: