尝试提交片段事务时出现 IllegalStateException。错误是“onSaveInstanceState 后无法执行此操作”。现在我知道我应该等到活动调用 onResumeFragments 后再执行这些事务。崩溃发生在活动被后台处理后,然后当我单击按钮更改片段时恢复。我可以等待 10 秒,它仍然会崩溃。当在主屏幕按下后活动恢复时,旧片段将重新加载并按预期工作。当用户单击将运行以下代码的按钮时会发生崩溃。崩溃发生在 commit() 调用中。知道是什么原因造成的吗?
更改片段的代码:
private void changeFragment(MyRoboFragment frag, boolean allowStateLoss) {
String fragName = frag.getClass().getName();
if (fragName.equals(currentFragmentName)) return;
currentFragmentName = fragName;
FragmentTransaction transaction = fragMan.beginTransaction();
transaction.replace(R.id.base_fragment, frag);
if (frag.pushToBackStack) {
transaction.addToBackStack(null);
}
if (allowStateLoss == true) {
transaction.commitAllowingStateLoss();
} else {
transaction.commit();
}
}