14

私はいくつかのstackoverflow.comの回答を読みましたが、それでも単純なAlertDialogよりもDialogFragmentを使用する利点がわかりません。私には、明らかに2つの戦略があります。

a)AlertDialog.Builderを使用してAlertDialogを構成し、それを.create()してから、アクティビティ(一部のボタンハンドラー)で.show()するか、

b)DialogFragmentをサブクラス化し、onCreateDialog()に同じAlertDialog構築コードを記述します(ただし、.create()を返し、アクティビティでDialogFragmentをインスタンス化して表示します。

出力は同じように見えます。

いずれにせよ、私は推奨のコードを使用していません-AlertDialogまたはDialogFragmentの両方で.show()を使用しています。別のサイズのデバイスに行くときの利点はありますか?またはポイントは何ですか...

洞察をありがとう、

マイケル

4

2 に答える 2

27

DialogFragmentは、構成の変更(画面の回転など)や、アプリのプロセスがバックグラウンドで強制終了され、ユーザーが後で戻った場合の状態の復元など、ライフサイクル管理のさまざまなケースを処理します。DialogFragmentを使用していない場合は、このようなケースを別の方法で処理する必要があります。

于 2013-02-10T22:33:33.373 に答える
2

@adampが言ったことに加えてDialogFragment、独自のライフサイクルコールバックを取得しているため、@ adampがそのライフサイクルを担当するため、アクティビティはそれに何をすべきかを指示する責任を負いません。

たとえば、アクティビティが終了しているとき、アクティビティはダイアログにを指示する必要がありdimiss()ます。そうしないとleaked the window、logcatにエラーが表示されます。

于 2017-11-06T07:02:52.393 に答える