crash总结

本文记录并解析了在Android开发中常见的Crash问题,包括Fragment未正确附加到Activity上导致的IllegalStateException,以及在onSaveInstanceState后调用onBackPressed引发的错误。提供了具体的解决方案和代码示例。

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

在工作中会定时解决crash问题,此篇文章是对遇到的crash进行记录。持续更新。。。。。。
1.Fatal Exception: java.lang.IllegalStateException:Fragment CustomerSearchFragment{ac94a87} not attached to Activity
问题截图:
在这里插入图片描述问题原因:Fragment还没有attach到Activity上就调用Fragmennt的getRources方法。
解决办法:

if(isAdded()){
   textView.setTextColor(getResources().getColor(R.color.main_color));
 }

2.Fatal Exception: java.lang.IllegalStateException:Can not perform this action after onSaveInstanceState
问题截图:
在这里插入图片描述
问题原因:
调用FragmentActivity的onBackPressed方法,查看源码

@Override
    public void onBackPressed() {
        if (!mFragments.getSupportFragmentManager().popBackStackImmediate()) {
            super.onBackPressed();
        }
    }

所以当Activity处于onSaveInstanceState状态之后时,调用onBackPressed会进行Fragment退栈操作报错。
所以:如果使用onBackgress(),假如Activity有添加管理frgament回退的话,调用该方法是不会退出Activity的.直到Fragment回退栈清空,才会退出Activity.
如果使用finish(),那么就会直接退出Activity。
参考https://blog.youkuaiyun.com/EdisonChang/article/details/49873669
解决方法:
使用finish()代替super.onBackPressed()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值