java.lang.IllegalStateException:|java.lang.IllegalStateException: Fragment already added

遇到的问题:
java.lang.IllegalStateException: Fragment already added
fragment 已经添加了 在网上查的答案大部分都是添加一个fragement.isAdded(); 判断。但是我的代码里面写的已经添加过了,但是还是有报这个错。


java.lang.IllegalStateException:|java.lang.IllegalStateException: Fragment already added
文章图片
现在的情况是Activity+Fragment+DailogFragment.先看一下什么情况下会报错


java.lang.IllegalStateException:|java.lang.IllegalStateException: Fragment already added
文章图片
原本以为是fragment和dailogFragment是同一个实体 , 结果发现是DialogFragment add了两次,下面两张图是debug时发现fragment和dailogFragment的


java.lang.IllegalStateException:|java.lang.IllegalStateException: Fragment already added
文章图片


java.lang.IllegalStateException:|java.lang.IllegalStateException: Fragment already added
文章图片
【java.lang.IllegalStateException:|java.lang.IllegalStateException: Fragment already added】



DialogFragment.show()内部调用了FragmentTransaction.add()方法,所以调用DialogFragment.show()方法时候也可能会出现这个异常。


java.lang.IllegalStateException:|java.lang.IllegalStateException: Fragment already added
文章图片
解决方案:dialogFragment.show(getChildFragmentManager(),"tag");

    推荐阅读