使用DialogFragment时发生IllegalStateException

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

  1. debugging时,屏幕closures
  2. 当我想从onActivityResult()打开一个FragmentDialog

至less我认为,这两种情况都是相当普遍的情况,在这两种情况下,我都会得到一个

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 

这就是我的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(); ... } } } 

我知道我可以设置一个设置,防止在debugging时屏幕进入睡眠状态,我可以在onActivityResult()中设置一个标志,然后在onStart()中打开对话框,但那不是我正在寻找的。 有没有更好的解决scheme?

感谢Simon

Solutions Collecting From Web of "使用DialogFragment时发生IllegalStateException"