解决Android里getActivity()为空的问题

在Android开发中,遇到getActivity()返回空引用可能导致应用崩溃。问题源于系统回收Activity资源时,保存Fragment状态,再次打开时无法找到对应的Activity。解决方案包括覆盖onSaveInstanceState不保存状态或覆盖onCreate方法避免恢复FRAGMENTS_TAG。
摘要由CSDN通过智能技术生成

           在开发项目中有时会碰到getActivity函数为空的情况,    导致apk空指针崩溃问题,  看代码逻辑没有明显的原因。

       如果看Activity.java、FragmentActivity.java的源码就可以找到原因。 当activity实例在后台时, 系统在回收资源时很可能回收掉Activity,  并在onSaveInstanceState函数里保存fragment的状态, 再次打开该Activity时, 在onCreate方法里取出bundle里的fragment状态, 但这时fragment对应的Activity早就不在了, 所以getActivity为空。


摘自FragmentActivity.java:

         protected void  onCreate(Bundle savedInstanceState) {

                 .......

                 if (savedInstanceState != null) {
                          Parcelable p = savedInstanceState.getParcelable(FRAGMENTS_TAG);
                          mFragment

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值