[解決済み】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");
}
関連
-
[解決済み】このアクティビティでは、Theme.AppCompatテーマ(またはその子孫)を使用する必要があります。
-
[解決済み】Android TextView : "setTextで表示されたテキストを連結しない" について
-
[解決済み】フラグメントMyFragmentがアクティビティにアタッチされない。
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] なぜフラグメントなのか、そしてアクティビティの代わりにフラグメントを使用するのはどんなときか?
-
[解決済み] アンドロイドでカスタムダイアログボックスを作成する方法は?
-
[解決済み] タイトルのないDialogFragmentを作成するには?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】メソッド 'findViewById(int)' を解決できない。)
-
[解決済み】まだ警告が出る:設定 'compile' は時代遅れで 'implementation' に置き換わった。
-
[解決済み】Edit Textのandroid:ems属性とは何ですか?[重複しています]
-
[解決済み】java.lang.RuntimeException: アクティビティを開始できない ComponentInfo
-
[解決済み】このアクティビティは、すでにウィンドウ装飾によって提供されるアクションバーを持っています。
-
[解決済み】新しいAVDを作成すると、CPU/ABIフィールドに「システムイメージがインストールされていません」と表示される。
-
[解決済み】Android Studioでused import文がunused import文に指定されるのはなぜ?
-
[解決済み】sendUserActionEvent()がnullである。
-
[解決済み】SDKの場所がandroid studioで見つからない。
-
[解決済み] Mockito lenient() を使用する場合