Fragment弹出回退栈的方法有以下:
void popBackStack()
弹出堆栈中的一个并且显示,类似按下返回键的操作;
popBackStack(String tag,int flags)
tag可以为null或者相对应的tag,flags只有0和1(POP_BACK_STACK_INCLUSIVE)两种情况
如果tag为null,flags为0时,弹出回退栈中最上层的那个fragment。
如果tag为null ,flags为1时,弹出回退栈中所有fragment。
如果tag不为null,那就会找到这个tag所对应的fragment,flags为0时,弹出该
fragment以上的Fragment,如果是1,弹出该fragment(包括该fragment)以
上的fragment。
popBackStack(int id,int flags)
与popBackStack(String tag,int flags)类似,找到id代表的fragment,然后执行一样的操作
popBackStackImmediate(int id, int flags)
popBackStackImmediate(String name, int flags)
popBackStackImmediate()
这几个方法类似以上的方法,只不过这几个在内部调用时会立即弹出
重要的东西来了!!!!
很多时候我们都以为fragment入栈后,譬如 依次入栈 fragment A ,B ,C ,D,
然后弹出B fragment,在回退栈里并不是我们想象的只剩下 D C A ,而是D C null
A,所以使用FragmentManager.getFragments(),然后拿List< Fragment >里的
对象时特别要注意判空。
如下图: