1

我已经阅读了一些有关 Android 中对话框的内容,但我有一个未解决的问题:

当我使用 Activity 的处理对话框的方法(例如:)onCreateDialog(...)时,我应该还是不应该在onPause()? 或者,也许我应该仅在保留它的情况下才将其关闭 - 制作了一个引用此对话框的 Activity 成员变量?

我找到了这个答案:https ://stackoverflow.com/a/2851833/501560说我需要显式调用该dismiss()方法,但我读过一些其他资源说 Activity 应该自己处理它......

谢谢。

4

3 回答 3

3

关闭对话框

当您准备好关闭对话框时,您可以通过在 Dialog 对象上调用 dismiss() 来关闭它。如有必要,您还可以从 Activity 调用dismissDialog(int),它会有效地为您调用Dialog上的dismiss()。

如果您正在使用onCreateDialog(int)管理对话框的状态(如上一节所述),那么每次关闭对话框时,Activity 都会保留 Dialog 对象的状态。如果您决定不再需要此对象,或者清除状态很重要,那么您应该调用removeDialog(int). 这将删除对该对象的任何内部引用,如果对话框正在显示,它将关闭它。

使用解除监听器

如果您希望您的应用程序在对话框被关闭的那一刻执行一些过程,那么您应该将一个 on-dismiss 侦听器附加到您的对话框。

首先定义DialogInterface.OnDismissListener interface. 这个接口只有一个方法,onDismiss(DialogInterface)当对话框被关闭时会被调用。然后只需将您的OnDismissListener实现传递给

setOnDismissListener().

但是,请注意,对话也可以“取消”。这是一种特殊情况,表明该对话框已被用户明确取消。如果用户按下“返回”按钮关闭对话框,或者如果对话框显式调用cancel()(可能来自Cancel对话框中的“”按钮),则会发生这种情况。当一个对话被取消时, OnDismissListener 仍然会被通知,但是如果你想被告知对话被显式取消(并且没有被正常关闭),那么你应该注册一个

DialogInterface.OnCancelListener with setOnCancelListener().
于 2012-01-04T11:28:24.557 回答
1

如果对话框由 Activity 管理,您永远不必关闭对话框。Activity 将在销毁时关闭对话框。如果 Activity 处于暂停状态,则不必关闭 Dialog。

于 2012-01-04T11:08:12.337 回答
0

我认为应该在 Activity 生命周期中onStop()onPause()在 Activity 生命周期中关闭对话框。

https://developer.android.com/reference/android/app/Dialog.html#dismiss()

于 2017-02-03T21:51:11.600 回答