就像标题所说的,在Android中对话框被取消或被取消有什么区别?


通常情况下,当一个对话框的任务完成并从屏幕上删除时,该对话框将被取消。当用户想要退出对话框并按下Back按钮时,对话框将被取消。

例如,屏幕上有一个标准的Yes/No对话框。如果用户单击No,那么对话框将被终止,No的值将返回给调用者。如果用户不选择Yes或No,而是单击Back以转义对话框,而不是做出选择,那么对话框将被取消,并且没有值返回给调用者。


dismiss是你必须在代码中显式调用的东西,通常用于响应对话框中按钮的单击事件。如果您愿意,您可以在Activity中调用disdisdialog,它将反过来在Dialog上调用disdisdialog。

取消方法只在代码中显式调用时执行,或者当用户在可取消对话框打开时按下BACK按钮时执行(正如@Lee指出的那样)。

如果您正在使用DatePicker,那么所有这些情况仍然是如此。正如@Lee所说,DatePickerDialog。OnDateSetListener仅仅检测用户何时从DatePicker中选择了一个日期。

Android开发者参考提供了更多关于对话框的信息。


调用Dismiss将从屏幕上删除对话框。此方法可以是 从任何线程安全调用。注意,当对话框被解散时,你不应该重写这个方法来做清理,而是在onStop中实现。

取消调用取消,取消对话框。这本质上与调用dismiss()相同,但它也会调用你的DialogInterface。OnCancelListener,如果注册。

隐藏此方法隐藏对话框,但不关闭它。

更多信息请看这里


The difference is all about returning the value to the caller function. dialog.cancel() will normally be called when the user hits the back button rather than selecting the choices that alert dialog offers like OK/Dismiss and return null/no value to the caller. While dialog.dismiss() is normally called when the user selects from the choices that alert dialog offers like hitting the Dismiss button on the dialog will dismiss the dialog and will return the non-null corresponding value to the caller. That's it.