当前位置:   article > 正文

FragmentTransaction commit 报错:java.lang.IllegalStateException: commit already called

FragmentTransaction commit 报错:java.lang.IllegalStateException: commit already called

程序代码如下图所示:

在这里插入图片描述
横竖屏切换时候,FragmentTransaction commit 报错:java.lang.IllegalStateException: commit already called
错误信息
根据上面的错误信息继续追踪
BackStackRecord.java类里面的 commitInternal 方法

commitInternal方法
从上面图片源码可以看到FragmentTransaction 调用的commit时最终是调用commitInternal 方法,在commitInternal 里如果mCommitted是true则抛出IllegalStateException(“commit already called”);大致意思是每一个实例化后的 FragmentTransaction 的事物只能被提交一次。

解决问题方法

在mTransaction调用add或者replace方法之前,重新实例化一下 mTransaction

 mTransaction = getSupportFragmentManager().beginTransaction();//mTransaction 实例化
  • 1

在这里插入图片描述
程序修改如上图所示,mTransaction可以正常commit了。

欢迎关注我的公众号,不定期推送优质的文章,
微信扫一扫下方二维码即可关注。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/314221
推荐阅读
相关标签
  

闽ICP备14008679号