DialogFragment优于AlertDialog

Rap*_*sso 61 android android-alertdialog android-dialogfragment dialogfragment

在开发Android应用程序时,我已经读过,建议使用DialogFragment而不是直接使用AlertDialog来显示警报和确认.

例如,在DialogFragment的文档中完成此操作:http://developer.android.com/reference/android/app/DialogFragment.html

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

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

谢谢

小智 51

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


Tob*_*run 50

在对话框上使用DialogFragment:


  • 自API级别13引入以来:

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

    关于showDialog的注意事项:

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

  • DialogFragment和AlertDialog之间的区别

    阅读问题时会想到一件事.他们有这么大的不同吗?一个DialogFragment是相当类似的对话,它只是一个包裹里面的片段.从关于DialogFragment的Android参考:

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

  • 其他说明

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

  • 国际文凭组织,答案的主要部分,"没有区别/他们非常相似"并没有真正回答问题的标题"优势超过". (8认同)