私のアプリのアクティビティでは、何かがアップロードされている間、「読み込み中」のキャンセルできない FragmentDialog を表示する必要があります。次のように、現在のアクティビティのコールバックからこのダイアログを表示します。
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 を使用) で行われています。アップロードが完了すると、私の ui Fragment は onActivityResult で通知され、現在、ダイアログを閉じようとしています。以前は、onActivityResult でコールバックを実行して読み込みダイアログを閉じる責任を委任していましたが、これも機能しません。
アクティビティがフォアグラウンドにある間はこのダイアログを閉じることができますが、バックグラウンドにあるときは IllegalStateException: can't perform this action after onSaveInstaneState. が発生します。onRemove を使用してみましたが、アプリがクラッシュすることはありませんが、DialogFragment も非表示になりません。私はUIフラグメントとアクティビティの両方を実行しましたが、まだ問題があります。
ドキュメントを読んでいますが、使用できる方法が見つかりません。
DialogFragment は、必要なように使用することは想定されていませんか、それともどうすればよいですか?