android - 共通 - showallowingstateloss
AlertDialogよりもDialogFragmentの利点 (2)
この質問には既に回答があります:
Androidアプリを開発するときは、 AlertDialog
を直接使用してアラートや確認を表示するのではなく、 DialogFragment
を使用することをお勧めします。
これは、例えば、DialogFragmentのドキュメンテーションで行われhttp://developer.android.com/reference/android/app/DialogFragment.html ://developer.android.com/reference/android/app/DialogFragment.html
人々はまた、ここでこれを好むと言う: Android DialogFragment vs Dialog
コードがより複雑になるので、私はこのアプローチの利点を知りたいと思います。
ありがとう
DialogFragment over Dialogを使用する:
APIレベル13の導入以来 :
ActivityのshowDialogメソッドは非推奨です 。 コード内の他の場所でダイアログを呼び出すことはお勧めできません。ダイアログを自分で管理する必要があるからです(向きの変更など)。 showDialogを使用しないと、例外が発生することがあります。ダイアログはアクティビティーにリンクされていません。
showDialogについての注意:
ダイアログの参照:アクティビティは、ダイアログの作成、保存、および復元を管理する機能を提供します。 onCreateDialog(int)、onPrepareDialog(int、Dialog)、showDialog(int)、およびdismissDialog(int)を参照してください。 これらのメソッドを使用すると、getOwnerActivity()はこのダイアログを管理したActivityを返します。
DialogFragmentとAlertDialogの違い
あなたの質問を読むときに気になることが1つあります。 彼らはとても異なっていますか? http://developer.android.com/reference/android/app/DialogFragment.htmlはhttp://developer.android.com/reference/android/app/DialogFragment.htmlとかなりよく似ていますが、フラグメントの中にラップされています。 DialogFragmentに関するAndroidリファレンスから:
DialogFragmentは、アクティビティのウィンドウの上に浮かぶダイアログウィンドウを表示するフラグメントです。 このフラグメントにはDialogオブジェクトが含まれており、フラグメントの状態に基づいて適切に表示されます。 ダイアログのコントロール(表示、非表示、非表示を決める)は、 http://developer.android.com/reference/android/app/DialogFragment.htmlでAPIを使用しhttp://developer.android.com/reference/android/app/DialogFragment.html行う必要があります。ダイアログの直接呼び出しではありません。
その他の注意事項
- フラグメントは、画面サイズが異なるデバイスの多様性のため、Androidフレームワークの自然な進化です。
- DialogFragmentsとFragmentsはサポートライブラリで利用できるようになり、現在使用されているすべてのAndroidバージョンでクラスを使用できるようになります。
かんたんだよ。
DialogFragmentはフラグメントです。 だから、他のオブジェクトができない間に断片はあなたに何を与えることができますか?
ライフサイクルコールバックです。
だからDialogFragmentでは、非常に強力で、コードをもっときれいにすることができます。
アクティビティが破壊されたときにダイアログを閉じなかった場合、ウィンドウリークを見たことがありますか? ですから、それを防ぐために、onPause()が呼び出されたときにダイアログを閉じようとしたことがありますか? だから、あなたはクラスレベルのオブジェクトへのそのダイアログのリファレンスを作らなければならなかったのですか?
DialogFragmentでは、すべてが処理されます。
また、ライフサイクルコールバックをすべて取得できます。
次に、対話に多くの情報を提供し、何をすべきかをアクティビティではなく、それ自身でスマートな仕事をすることができます。