私のアプリのアクティビティでは、何かがアップロードされている間に、「読み込み中」の取り消し不可能なFragmentDialogを表示する必要があります。私はこのような私の現在の活動中のコールバックからこのダイアログを表示:アクティビティがバックグラウンドである間にDialogFragment(サポートライブラリ)を閉じるIllegalStateExceptionを取得する
final FragmentManager fm = getSupportFragmentManager();
final FragmentTransaction ft = fm.beginTransaction();
final Fragment prev = fm.findFragmentByTag("loading");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
final DialogFragment df =
IndeterminateProgressDialogFragment.newInstance(
getString(R.string.loading_dialog_sending_data));
df.setCancelable(false);
df.show(ft, "loading");
アップロードが私のUIの断片から実行される(asynctaskを使用して)保持断片で起こっています。アップロードが完了すると、私のフラグメントにonActivityResultが通知され、現在はダイアログを閉じようとします。これまでは、onActivityResultでコールバックを使用して読み込みダイアログを閉じるという責任を委譲していましたが、それはうまくいきません。
私のアクティビティがフォアグラウンドになっている間にこのダイアログを閉じることはできますが、バックグラウンドにいるときはIllegalStateExceptionが発生します:onSaveInstaneStateの後でこのアクションを実行できません。私はonRemoveを使ってみましたが、これは私のアプリケーションがクラッシュすることはありませんが、DialogFragmentを隠すこともありません。私はあなたの私の断片と私の活動で両方のことをやってきましたが、まだ問題があります。
私はドキュメントを読んでいますが、使用できる方法はありません。
DialogFragmentは必要なように使用されていないと思われますか、何をすべきですか?
しかし、その後、私のフラグメントダイアログが私の保有フラグメント(バックグラウンドで仕事をしている1)の対象とすべきであり、私のダイアログが私のUIフラグメントに結果を渡します。私は正しい? – Platonius
これは、show wait \ loadingダイアログでのみ行いますか?なぜあなたはonActivityResultを使用しますか?私は正しい? – garmax1
はい、あります。 onActivityResultを使用すると、ワーカーのフラグメントから結果が得られるので、アップロードが成功したかどうかを知ることができます。 – Platonius