Androidアプリを開発するとき、アラートと確認を表示するためにDialogFragment
を直接使用する代わりにAlertDialog
を使用することをお勧めします。
これは、たとえば、DialogFragmentのドキュメントで行われます。 http://developer.Android.com/reference/Android/app/DialogFragment.html
また、人々はここでこれを好むと言います: Android DialogFragment vs Dialog
コードがより複雑になるため、このアプローチの利点を知りたいと思います。
ありがとう
APIレベル13の導入以来:
activityの showDialog メソッドはdeprecatedです。コードの別の場所でダイアログを呼び出すことは、ダイアログを自分で管理する必要があるため推奨されません(例:向きの変更)。 showDialogを使用しないと、例外が発生する場合があり、ダイアログはアクティビティにリンクされません。
ShowDialogに関する注意:
ダイアログの参照:アクティビティは、ダイアログの作成、保存、復元を管理する機能を提供します。 onCreateDialog(int)、onPrepareDialog(int、Dialog)、showDialog(int)、およびdismissDialog(int)を参照してください。これらのメソッドが使用される場合、getOwnerActivity()はこのダイアログを管理したアクティビティを返します。
DialogFragmentとAlertDialogの違い
あなたの質問を読むときに頭に浮かぶ一つのこと。彼らはとても違いますか? DialogFragment はDialogとよく似ており、フラグメント内にラップされています。 From Android DialogFragmentに関するリファレンス:
DialogFragmentは、アクティビティのウィンドウの上に浮かぶダイアログウィンドウを表示するフラグメントです。このフラグメントにはDialogオブジェクトが含まれ、フラグメントの状態に基づいて適切に表示されます。ダイアログの制御(表示、非表示、非表示のタイミングの決定)は、ダイアログでの直接呼び出しではなく、API here を使用して行う必要があります。
その他の注意事項
これは簡単。
DialogFragmentはフラグメントです。それでは、フラグメントはあなたに何を提供できますか?
ライフサイクルコールバックです。
したがって、DialogFragmentを使用すると、非常に強力になり、コードがずっときれいになります。
アクティビティが破棄されたときにダイアログを閉じなかった場合、ウィンドウリークが発生したことがありますか?それを防ぐために、onPause()が呼び出されたときにダイアログを閉じようとしたことがありますか?そのためには、そのダイアログをクラスレベルのオブジェクトに参照する必要がありましたか?
DialogFragmentを使用すると、すべて処理されます。
そして、すべてのライフサイクルコールバックを取得します。
それから、ダイアログにより多くのインテリジェンスを提供し、アクティビティに何をすべきかを伝えるのではなく、それ自身でスマートな作業をさせることができます。