使用DialogFragment时出现IllegalStateException

Sim*_*ays 8 android android-dialogfragment

我刚开始使用Android支持库中的DialogFragment,到目前为止发现它非常烦人.我有一些从我的应用程序中的不同位置调用的自定义AsyncTasks.有两种情况我遇到DialogFragments的问题:

  1. 调试时屏幕关闭
  2. 当我想从onActivityResult()打开FragmentDialog时

至少我认为两者都是相当常见的情况,在这两种情况下我都得到了

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
Run Code Online (Sandbox Code Playgroud)

这就是我的AsyncTasks的结构:

private class UploadImageAsyncTask extends AsyncTask<Void, Void, Image> {
    private ProgressDialogFragment dialog;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        FragmentManager fm = getSupportFragmentManager();
        dialog = new ProgressDialogFragment();
        dialog.show(fm, "ProgressDialogFragment");
    }

    @Override
    protected Image doInBackground(Void... params) {
        ...
    }

    @Override
    protected void onPostExecute(Image result) {
        super.onPostExecute(result);
        dialog.dismiss();

        ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以设置一个设置,防止屏幕在调试时进入睡眠状态,我可以在onActivityResult()中设置一个标志,然后在onStart()中打开对话框,但这不是我真正想要的.还有更好的解决方案吗?

谢谢西蒙

Ene*_*nes 5

使用dialog.dismissAllowingStateLoss();而不是dialog.dismiss();