1. ホーム
  2. アンドロイド

[解決済み】AndroidのDialogFragmentとDialogの比較

2022-04-04 16:13:24

質問

Googleが推奨しているのは DialogFragment の代わりに、単純な Dialog を使用することで Fragments API しかし、孤立した DialogFragment は、単純なYes-No確認メッセージボックスです。この場合のベストプラクティスは何でしょうか?

どのように解決するのですか?

はい、使用します。 DialogFragment で、その中に onCreateDialog を作成するには、とにかく AlertDialog ビルダーを使用することです。 AlertDialog という確認ボタンがあります。それほど多くのコードは必要ありません。

フラグメントのイベント処理に関しては、様々な方法があると思いますが、私は単純にメッセージを定義しています。 Handler 私の Fragment に渡してください。 DialogFragment のコンストラクタを経由して、様々なクリックイベントに応じて、フラグメントのハンドラへメッセージを返します。この方法にもいろいろありますが、私の場合は次のようにしています。

ダイアログでメッセージを保持し、コンストラクタでインスタンス化します。

private Message okMessage;
...
okMessage = handler.obtainMessage(MY_MSG_WHAT, MY_MSG_OK);

を実装してください。 onClickListener をダイアログに挿入し、適宜ハンドラを呼び出します。

public void onClick(.....
    if (which == DialogInterface.BUTTON_POSITIVE) {
        final Message toSend = Message.obtain(okMessage);
        toSend.sendToTarget();
    }
 }

編集

そして Message で保存することができます。 onSaveInstanceState を復元してください。

outState.putParcelable("okMessage", okMessage);

では onCreate

if (savedInstanceState != null) {
    okMessage = savedInstanceState.getParcelable("okMessage");
}