👉 出现原因
一般是由于离开Activity进入其他界面,这时Activity被回收
再回到Activity时,Activity会重启恢复之前的状态
在Activity尚未完全恢复时,过早地执行了Fragment的commit方法,就会引发这个问题
👉 原理
Activity在销毁前,会执行onSaveInstanceState保存自身状态
Activity在恢复时,会调用onRestoreInstanceState方法恢复之前保存的状态
在onSaveInstanceState-onRestoreInstanceState之间的时间段内,是不允许FragmentTransaction进行commit操作的
👉 解决方案有两种
通过handler延时1秒执行FragmentTransaction.commit()操作
FragmentTransaction.commit()改成FragmentTransaction.commitAllowingStateLoss()