gpt4 book ai didi

android - Dialog.show() 与 Activity.showDialog()

转载 作者:IT王子 更新时间:2023-10-29 00:09:48 26 4
gpt4 key购买 nike

据我所知,有两种方法可以从 Activity 中显示 Dialog。

  1. 创建 Dialog(例如,使用 AlertDialog.Builder),然后调用新创建的 Dialog 的 show() 方法。
  2. 调用 Activity 的 showDialog() 方法,传入一个 int,它唯一地定义了您想要构建的 Dialog 类型。然后重写 onCreateDialog() 以实际构建 Dialog,Android 将为您显示它。

第二种方法似乎是标准做法,但我很好奇我使用哪种方法是否重要。以下是我能想到的:

使用Dialog.show

的原因
  1. 如果您需要以某种方式参数化 Dialog,使用 Activity.showDialog 可能会有些尴尬,如 this question 中所述.您可能必须在成员变量中存储字符串或其他内容,以便稍后在 onCreateDialogonPrepareDialog 期间检索它。
  2. 创建和修改对话框的逻辑分布在多个地方,可能会使代码更难阅读和维护:
    • 你调用showDialog()
    • 的地方
    • 在被覆盖的 onCreateDialog 方法中可能很大的 switch 语句中
    • 在被覆盖的 onPrepareDialog 方法中可能很大的 switch 语句中

使用Activity.showDialog的原因:

  1. Activity.showDialog 的 API 文档说 Dialog 是由 Activity “管理”的,我想这会带来一些好处吗?但如果你使用 AlertDialog.Builder 也是如此,我认为,因为你将 this 作为参数传递给 Builder 的构造函数。
  2. 如果您的 Activity 将多次显示相同(或非常相似)的 Dialog,则此选项只创建一次,而不是每次都创建一个新的,从而减少系统分配空间的压力用于新对象、垃圾回收等。

所以我的问题是,决定何时使用Activity.showDialog和何时使用Dialog.show的标准是什么,为什么?

最佳答案

在我看来,您应该更喜欢 showDialog,因为这种方法将为您完成大部分工作。例如,您不必担心更改屏幕方向后会丢失对对话框的引用。它将自动重新创建。 Dialog.show 更容易出错。

所以我建议你尽可能使用 showDialog

关于android - Dialog.show() 与 Activity.showDialog(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com