1

尝试提交片段事务时出现 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();
    }
}
4

0 回答 0