【问题标题】:Can i use a `DialogFragment` for a simple yes/no dialog instead of `AlertDialog`? What are the adavntages?我可以使用 `DialogFragment` 来进行简单的是/否对话框而不是 `AlertDialog` 吗?有什么优点?
【发布时间】:2017-06-29 10:48:41
【问题描述】:

根据 Android Developers 中的文档,

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

但我在Alert Dialog 中也有相同的行为......也就是说,即使我旋转屏幕或按下后退按钮,Alert Dialog 也不会受到影响。

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

【问题讨论】:

    标签: android android-fragments dialog android-dialogfragment


    【解决方案1】:

    DialogFragment 是一个专门的Fragment 形状为对话框,而AlertDialog 是一个专门的Dialog。 片段可以在运行时绑定到 Activity,例如,为您的对话框使用 DialogFragment 将允许您在多个 Activity 上重复使用相同的对话框,而无需每个 Activity 单独处理所有代码。 我绝对推荐使用 DialogFragment 而不是 AlertDialog。

    【讨论】:

    • 我的项目中有很多不同的对话框...我还能用Dialog Fragment代替Alert Dialog吗?
    • @SaathwikNalige 为什么你认为你不能?我认为你应该考虑一下你的推理:如果你已经有一些对话框在工作,为什么要改变它们?相反,如果您有充分的理由,例如“无论用户在我的应用程序的哪个页面上,我都想在此事件发生时使用此对话框”,那么您绝对应该转而使用 DialogFragment。更一般地说,我建议开始使用该类。只要确保你学会如何正确使用它,我的 2 美分。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多