在项目中遇到了这个问题。头痛了很久,总是无法重现,也不能很好的解决。总是在息屏后一段时间,就会报java.lang.IllegalArgumentException:No view found for id for....的问题,然后程序就崩溃了。相信很多朋友也有和我一样遇到这个问题的。那么这个问题怎么去解决呢?
在仔细研究fragment的manager后,下面是我发现的东西
什么鬼?怎么会有两个fragmentManager。这两个东西有什么关系呢?
API上面说了一大堆,我这里简单总结一下就是。
如果fragment在replace新的fragment的时候,容器用的是Activity布局中某个部分或者整体作为容器,那么,就使用getFragmentManager();
即:getFragmentManager到的是activity对所包含fragment的Manager。
如果fragment在replace新的fragment的时候,容器用的是此fragment的布局文件中某个整体或者部分view作为容器,那么,就是用getChildFragmentManager();
即:fragment嵌套fragment,就需要利用getChildFragmentManager()