Fragment java.lang.IllegalStateException: FragmentManager is already executing transactions解决方法

错误产生 setOffscreenPageLimit

Activity嵌套几个fragment,其中一个fragmeng 在通过viewPaget+ fragmeng 嵌套时,

 FragmentAdapter mFragmentAdapter = new FragmentAdapter(getActivity().getSupportFragmentManager()
                , mFragmentList);
        viewPager.setAdapter(mFragmentAdapter);
        viewPager.setOffscreenPageLimit(3);//tabs为tab数

执行到 viewPager.setOffscreenPageLimit(3); 就会报如上错误,
去掉该行,由于fragment 切换默认只缓存相邻的一个fragment,当切换到第三个fragment 时 ,第一个fragment 已经销毁,里面的变量值为空,当再次切换到第一个fragment时 。第一个fragment显示空白,
除非在管理的fragment 手动执行子fragment方法,请求数据 进行刷新,

解决方案 getChildFragmentManager()

如果 添加 viewPager.setOffscreenPageLimit(3); 通过缓存方式 处理

 //第一次getFragmentManager()获取到的FragmentManager,只提供给activity那一层使用。
 //在viewPager那一层只能使用getChildFragmentManager()获取FragmentManager来处理子fragment。
    FragmentAdapter    mFragmentAdapter = new FragmentAdapter(getChildFragmentManager()
                , mFragmentList);
        viewPager.setAdapter(mFragmentAdapter);
        viewPager.setOffscreenPageLimit(3);//tabs为tab数
参考

FragmentManager is already executing transactions

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值