显示对话框时出现java.lang.IllegalStateException错误

时间:2014-07-29 09:01:43

标签: android android-dialogfragment

在app store开发者控制台上收到两个“Crashes& ANRs”,其中包含以下错误:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1354)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1372)

我逻辑上发现了错误:我有一个异步回调用于发出和HTTP请求。如果我单击发出HTTP呼叫的按钮,然后单击返回(即关闭活动),我会收到此问题。

以下是导致此问题的代码:

    ResponseErrorHandler errHdl = new ResponseErrorHandler();
    DialogFragment dialogFragment = errHdl.HandelError(error, responseBody);
    FragmentManager fragMan = getSupportFragmentManager();
    dialogFragment.show(fragMan, TAG + "ErrorDialog");

因此,如果我正确理解发生的事情是我的活动正在关闭,然后对话框片段试图在活动消失时显示对话框。

我在活动结束时取消了我的网络请求:

@Override
protected void onStop() {
    super.onStop();
    Network.cancelRequests(ConnectingActivity.this);
}

1 个答案:

答案 0 :(得分:1)

您可以在显示对话框之前检查活动is being closed/killed并采取相应措施。

E.g:

if (!parentActivity.isFinishing()) {
    dialogFragment.show(fragMan, TAG + "ErrorDialog");
}

希望这有帮助。