Fragment getFragmentManager、getSupportFragmentManager、getChildFragmentManager区别

Fragment getSupportFragmentManager、getFragmentManager、getChildFragmentManager区别

1、getSupportFragmentManager是AppCompatActivity里的方法,用于管理Activity里同级的Fragment

 

2、getFragmentManager是Fragment里的方法,和在Activity里调用getSupportFragmentManager得到的FragmentManager是一样的,都是用于管理Activity里同级的Fragment,在Fragment调用getFragmentManager,相当于获取Activity的FragmentManager,来管理与当前Fragment是同级的其它的Fragment。

比如Activity A,FragmentA1,FragmentA2。FragmentA1已经添加到ActivityA中,如果添加FragmentA2,并且FragmentA2属于ActivityA管理,则在ActivityA调用getSupportFragmentManager添加FragmentA2,或者在FragmentA1调用getFragmentManager添加FragmentA2,效果是一样的。如果FragmentA1已经脱离ActivityA,getFragmentManager将会得到null。

 

3、getChildFragmentManager用户当前Fragment管理它的子Fragment。如果在Fragment通过getChildFragmentManager,添加了一个子Fragment1,并添加到回退栈,此时getChildFragmentManager管理的回退栈内只有一个Fragment1,回退后,栈就清空了。


回退子Fragment,如果想在当前Fragment的onResume、onHiddenChanged、setUserVisibleHint,发现都得不到回调,可以通过以下方式在父的Fragment监听子Fragment的回退栈。

 childFragmentManager.addOnBackStackChangedListener {
        if(childFragmentManager.backStackEntryCount==0){
                
        }
 }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值