web-dev-qa-db-ja.com

AlertDialogに対するDialogFragmentの利点

Androidアプリを開発するとき、アラートと確認を表示するためにDialogFragmentを直接使用する代わりにAlertDialogを使用することをお勧めします。

これは、たとえば、DialogFragmentのドキュメントで行われます。 http://developer.Android.com/reference/Android/app/DialogFragment.html

また、人々はここでこれを好むと言います: Android DialogFragment vs Dialog

コードがより複雑になるため、このアプローチの利点を知りたいと思います。

ありがとう

56

DialogでDialogFragmentを使用:


  • 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 を使用して行う必要があります。

  • その他の注意事項

    • フラグメントは、Androidフレームワークの自然な進化です。さまざまな画面サイズのデバイスが多様であるためです。
    • DialogFragmentsとFragmentsは、サポートライブラリで利用可能になります。これにより、現在使用されているすべてのAndroidバージョンでクラスが使用可能になります。
47
Tobrun

これは簡単。
DialogFragmentはフラグメントです。それでは、フラグメントはあなたに何を提供できますか?
ライフサイクルコールバックです。
したがって、DialogFragmentを使用すると、非常に強力になり、コードがずっときれいになります。
アクティビティが破棄されたときにダイアログを閉じなかった場合、ウィンドウリークが発生したことがありますか?それを防ぐために、onPause()が呼び出されたときにダイアログを閉じようとしたことがありますか?そのためには、そのダイアログをクラスレベルのオブジェクトに参照する必要がありましたか?
DialogFragmentを使用すると、すべて処理されます。
そして、すべてのライフサイクルコールバックを取得します。
それから、ダイアログにより多くのインテリジェンスを提供し、アクティビティに何をすべきかを伝えるのではなく、それ自身でスマートな作業をさせることができます。

46
KoreanDude