Fragment 出栈的方法popBackStack需要特别注意的一点

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 >里的

对象时特别要注意判空。

如下图:

这里写图片描述

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值