【Android】【异常处理】解决FragmentTransaction Can not perform this action after onSaveInstanceState问题

👉 出现原因
一般是由于离开Activity进入其他界面,这时Activity被回收
再回到Activity时,Activity会重启恢复之前的状态
在Activity尚未完全恢复时,过早地执行了Fragment的commit方法,就会引发这个问题

👉 原理
Activity在销毁前,会执行onSaveInstanceState保存自身状态
Activity在恢复时,会调用onRestoreInstanceState方法恢复之前保存的状态
在onSaveInstanceState-onRestoreInstanceState之间的时间段内,是不允许FragmentTransaction进行commit操作的

👉 解决方案有两种

通过handler延时1秒执行FragmentTransaction.commit()操作

FragmentTransaction.commit()改成FragmentTransaction.commitAllowingStateLoss()

点赞