据我所知,有两种方法可以从 Activity 中显示 Dialog。
- 创建 Dialog(例如,使用
AlertDialog.Builder
),然后调用新创建的 Dialog 的show()
方法。 - 调用 Activity 的
showDialog()
方法,传入一个 int,它唯一地定义了您想要构建的 Dialog 类型。然后重写onCreateDialog()
以实际构建 Dialog,Android 将为您显示它。
第二种方法似乎是标准做法,但我很好奇我使用哪种方法是否重要。以下是我能想到的:
使用Dialog.show
- 如果您需要以某种方式参数化 Dialog,使用
Activity.showDialog
可能会有些尴尬,如 this question 中所述.您可能必须在成员变量中存储字符串或其他内容,以便稍后在onCreateDialog
或onPrepareDialog
期间检索它。 - 创建和修改对话框的逻辑分布在多个地方,可能会使代码更难阅读和维护:
- 你调用
showDialog()
的地方
- 在被覆盖的
onCreateDialog
方法中可能很大的switch
语句中 - 在被覆盖的
onPrepareDialog
方法中可能很大的switch
语句中
- 你调用
使用Activity.showDialog
的原因:
Activity.showDialog
的 API 文档说 Dialog 是由 Activity “管理”的,我想这会带来一些好处吗?但如果你使用AlertDialog.Builder
也是如此,我认为,因为你将this
作为参数传递给 Builder 的构造函数。- 如果您的 Activity 将多次显示相同(或非常相似)的 Dialog,则此选项只创建一次,而不是每次都创建一个新的,从而减少系统分配空间的压力用于新对象、垃圾回收等。
所以我的问题是,决定何时使用Activity.showDialog
和何时使用Dialog.show
的标准是什么,为什么?
最佳答案
在我看来,您应该更喜欢 showDialog
,因为这种方法将为您完成大部分工作。例如,您不必担心更改屏幕方向后会丢失对对话框的引用。它将自动重新创建。 Dialog.show
更容易出错。
所以我建议你尽可能使用 showDialog
。
关于android - Dialog.show() 与 Activity.showDialog(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170308/