android——fragment长时间home或者锁屏java.lang.IllegalArgumentException:No view found for id for....

本文解析了在Android开发中遇到的fragment管理问题,详细说明了getFragmentManager()与getChildFragmentManager()的区别及应用场景,帮助开发者避免因不当使用导致的应用崩溃。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

getFragmentManager():Activity管理嵌入的fragment使用

getChildFragmentManager:Fragment管理嵌套的Fragment使用

如果使用不当就会造成类似标题的错误

在项目中遇到了这个问题。头痛了很久,总是无法重现,也不能很好的解决。总是在息屏后一段时间,就会报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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值