onSaveInstanceState之后

onSaveInstanceState之后

我在按钮onClick事件中显示了一个DialogFragment,如下所示:

public void  onButtonClick() {
    myDialogFragment.show(getSupportFragmentManager(), "dialog");
}


为什么会导致IllegalStateException,会在onSaveInstanceState之后调用它?
这是日志:

Fatal Exception: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
   at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1377)
   at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1395)
   at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:637)
   at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:616)
   at android.support.v4.app.DialogFragment.show(DialogFragment.java:139)
   at com.a.b.AFragment.editSex(AFragment.java:226)
   at com.a.b.AFragment.access$200(AFragment.java:46)
   at com.a.b.AFragment$3.onButtonClick(AFragment.java:134)

最佳答案

在您的show方法内部调用此

fragmentTransaction.commitAllowingStateLoss()


将片段添加到

fragmentTransaction.add();


以供参考


  与提交类似,但允许在保存活动状态后执行提交。这很危险,因为如果以后需要将活动从其状态还原,则提交可能会丢失,因此,仅应在UI状态可以在用户上意外更改的情况下使用。

关于android - 致命异常:java.lang.IllegalStateException:onSaveInstanceState之后无法执行此操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38095687/

10-12 03:21