解决 使用FragmentTabHost 和 viewpager时编译器报错 FragmentManager is already executing transactions

这几天写的项目里  使用了FragmentTabHost 加Fragment 嵌套viewpager的模式


在运行项目的时候 点击tab切换到装有viewpager的那一栏时,报错

FragmentManager is already executing transactions


查看代码

在装有viewpager的那个fragment里  这行代码出了问题



manager = getFragmentManager();

我尝试把它改为

manager = getChildFragmentManager();



再运行发现不报错了

于是查了一下  getFragmentManager和getChildFragmentManager的区别

childFragmentManager  返回的是一个  在某一fragment里  单独管理该碎片里嵌套的其他碎片的 私有的manager 它负责该碎片内其他碎片的Transcation事务 

 FragmentManager 拿到的是一个用来管理那些和某activity直接相关联的碎片的 碎片管理器  

 


在MainActivity初始化FragmentTabHost的时候,传入了一个fragmentmanager,就是getFragmentManager拿到的,因为tabhost要交互的是第一层的fragment ,是直接和activity相交互的

而在Fragment1里嵌套的viewpager ,因为要交互的是嵌套的Fragment,所以需要拿到ChildFragmentManager才行。



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值