我在按钮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/