AndroidサポートライブラリからDialogFragmentを使い始めたばかりで、これまでのところ非常に面倒です。アプリのさまざまな場所から呼び出されるカスタム AsyncTasks がいくつかあります。DialogFragments で問題が発生する場合が 2 つあります。
- デバッグ中に画面が消えるとき
- onActivityResult() から FragmentDialog を開きたいとき
どちらも、少なくとも私はかなり一般的な状況だと思います。
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();
...
}
}
}
デバッグ中に画面がスリープ状態にならないように設定し、onActivityResult() でフラグを設定してから onStart() でダイアログを開くことができることはわかっていますが、それは実際には探しているものではありません。より良い解決策はありますか??
ありがとうサイモン