DialogFragment优于AlertDialog

时间:2012-12-07 14:32:35

标签: android alertdialog android-dialogfragment dialogfragment

开发Android应用时,我读过建议使用DialogFragment而不是直接使用AlertDialog来显示提醒和确认。

例如,这在DialogFragment的文档:http://developer.android.com/reference/android/app/DialogFragment.html

上完成

人们也说他们更喜欢这个: Android DialogFragment vs Dialog

我想知道这种方法的优点,因为代码变得更加复杂。

由于

2 个答案:

答案 0 :(得分:47)

在对话框上使用DialogFragment:


  • 自引入API 13级

    来自Activity的showDialog方法已弃用。 不建议在代码中的其他位置调用对话框,因为您必须自己管理对话框(例如方向更改)。不使用showDialog会导致偶然的异常,对话框不会链接到任何Activity。

    关于showDialog的注意事项:

      

    对话框的参考:活动提供了管理对话框的创建,保存和恢复的工具。请参阅onCreateDialog(int),onPrepareDialog(int,Dialog),showDialog(int)和dismissDialog(int)。如果使用这些方法,getOwnerActivity()将返回管理此对话框的Activity。

  • DialogFragment和AlertDialog之间的区别

    阅读问题时会想到一件事。他们有这么大的不同吗? DialogFragment非常类似于Dialog,它只是包含在一个片段中。来自关于DialogFragment的Android参考:

      

    DialogFragment是一个片段,它显示一个浮动在其顶部的对话框窗口   活动的窗口。这个片段包含一个Dialog对象   根据片段的状态适当显示。控制   应该完成对话框(决定何时展示,隐藏,解除它)   通过API here,而不是直接调用对话框。

  • 其他说明

    • 由于具有不同屏幕尺寸的设备的多样性,碎片是Android框架中的自然演变。
    • DialogFragments和Fragments在支持库中提供,使该类可用于所有当前使用的Android版本。

答案 1 :(得分:43)

这很容易。
DialogFragment是一个片段。 那么片段可以为你提供什么,而其他对象可以为什么呢? 这是生命周期的回调 因此,使用DialogFragment,它可以非常强大,使您的代码更清晰 如果在活动被破坏时没有关闭对话框,您是否见过窗口泄漏?所以为了防止这种情况,你有没有试过在调用onPause()时关闭对话框?那么,为了做到这一点,您是否曾经不得不将该对话框引用到类级对象? 使用DialogFragment,它都被处理完毕 你得到所有生命周期的回调 然后,您可以为对话框提供更多智能,并让它自己做一些聪明的工作,而不是活动告诉它该做什么。