9

AndroidサポートライブラリからDialogFragmentを使い始めたばかりで、これまでのところ非常に面倒です。アプリのさまざまな場所から呼び出されるカスタム AsyncTasks がいくつかあります。DialogFragments で問題が発生する場合が 2 つあります。

  1. デバッグ中に画面が消えるとき
  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() でダイアログを開くことができることはわかっていますが、それは実際には探しているものではありません。より良い解決策はありますか??

ありがとうサイモン

4

2 に答える 2

5

dialog.dismissAllowingStateLoss();の代わりに使用dialog.dismiss();

于 2014-10-04T23:12:44.517 に答える
1

あなたはこの他の質問に答えを持っています:onActivityResultからDialogFragmentを表示します

基本的に、互換性ライブラリのバグです

于 2012-10-11T14:57:10.567 に答える