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