在开发 Android 应用程序时,我读到建议使用DialogFragment而不是直接使用 anAlertDialog来显示警报和确认。
例如,这是在 DialogFragment 的文档中完成的:http: //developer.android.com/reference/android/app/DialogFragment.html
人们还说他们更喜欢这里: Android DialogFragment vs Dialog
我想知道这种方法的优点,因为代码变得更加复杂。
谢谢
在开发 Android 应用程序时,我读到建议使用DialogFragment而不是直接使用 anAlertDialog来显示警报和确认。
例如,这是在 DialogFragment 的文档中完成的:http: //developer.android.com/reference/android/app/DialogFragment.html
人们还说他们更喜欢这里: Android DialogFragment vs Dialog
我想知道这种方法的优点,因为代码变得更加复杂。
谢谢
这很简单。
DialogFragment 是一个片段。那么片段可以为您提供什么,而其他对象却不能呢?
这是生命周期回调。
因此使用 DialogFragment,它可以非常强大,并使您的代码更加简洁。
如果您在 Activity 被销毁时没有关闭对话框,您是否见过窗口泄漏?所以为了防止这种情况,你有没有试过在 onPause() 被调用时关闭对话框?因此,要做到这一点,您是否曾经必须将该对话框引用到类级别对象?
使用 DialogFragment,这一切都得到了处理。
你会得到所有的生命周期回调。
然后你可以为对话框提供更多的智能,让它自己做一些聪明的工作,而不是 Activity 告诉它做什么。
自 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 来完成,而不是直接调用对话框。
其他注意事项