需求场景:
在开发中遇到下面这样场景:
a.创建 Fragment A 显示。 这时栈的结构是:
1.Fragment A
b.创建 Fragment B 并 显示。 从下到上看,这时栈的结构是:
2.Fragment B
1.Fragment A
c.创建 Fragment C 并 显示。 从下到上看,这时栈的结构是:
3.Fragment C
2.Fragment B
1.Fragment A
那么,如何从 Fragment C 一次性跳到 Fragment A 呢?
实现:
入栈时,使用方法
addToBackStack(nameForBackstackstate)
传入了一个参数 name,这是个Fregment的标示,下面还要用到。
代码:
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);
这个方法的第二个参数
POP_BACK_STACK_INCLUSIVE
指示了这个弹出行为是 一次性出栈“指定的name的”Fragment 以上的所有 Fragment。
参考: