开发Android应用时,我读过建议使用DialogFragment
而不是直接使用AlertDialog
来显示提醒和确认。
例如,这在DialogFragment的文档:http://developer.android.com/reference/android/app/DialogFragment.html
上完成人们也说他们更喜欢这个: Android DialogFragment vs Dialog
我想知道这种方法的优点,因为代码变得更加复杂。
由于
答案 0 :(得分:47)
自引入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,而不是直接调用对话框。
其他说明
答案 1 :(得分:43)
这很容易。
DialogFragment是一个片段。
那么片段可以为你提供什么,而其他对象可以为什么呢?
这是生命周期的回调
因此,使用DialogFragment,它可以非常强大,使您的代码更清晰
如果在活动被破坏时没有关闭对话框,您是否见过窗口泄漏?所以为了防止这种情况,你有没有试过在调用onPause()时关闭对话框?那么,为了做到这一点,您是否曾经不得不将该对话框引用到类级对象?
使用DialogFragment,它都被处理完毕
你得到所有生命周期的回调
然后,您可以为对话框提供更多智能,并让它自己做一些聪明的工作,而不是活动告诉它该做什么。