我可以将 `DialogFragment` 用于简单的 yes/no 对话框而不是 `AlertDialog` 吗?有什么好处?

Can i use a `DialogFragment` for a simple yes/no dialog instead of `AlertDialog`? What are the adavntages?

根据 Android 开发人员中的文档,

使用 DialogFragment 管理对话框可确保其正确处理生命周期事件,例如用户按下后退按钮或旋转屏幕时。 DialogFragment class 还允许您在更大的 UI 中将对话框的 UI 作为可嵌入组件重复使用,就像传统的片段一样(例如当您想要对话框 UI在大屏幕和小屏幕上显示不同)。

但我在 Alert Dialog 中也有同样的行为...也就是说,即使我旋转屏幕或按后退按钮,对 Alert Dialog 也没有影响。

那我为什么要用Dialog Fragment而不是Alert Dialog呢?

DialogFragment 是一个专门的Fragment shaped as a dialog, while AlertDialog is a specialized Dialog。 片段可以在运行时绑定到 Activity,因此例如,为您的对话框使用 DialogFragment 将允许您在多个活动中重复使用相同的对话框,而无需每个 activity 处理所有分别编码。 我绝对推荐使用 DialogFragment 而不是 AlertDialog。

如果您想在方向更改后保留对话框,请使用对话框片段。使用 DialogFragment 的优点是对话框的所有生命周期都将为您处理。

如果您没有在清单中添加 android:configChanges="keyboardHidden|orientation",那么您的 activity 将在方向更改时重新创建,并且您的警报对话框 不会在方向更改后重新实例化。避免此问题的最佳方法是使用 DialogFragment。但是,如果您忽略方向更改并且不通过在清单中添加上面的行来重新创建 activity,那么您将不会遇到此问题。