在Android中关闭或取消对话框的区别是什么?


193

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

Answers:


187

通常,对话框的工作完成并从屏幕上删除时,将其关闭。当用户想要退出对话框并按下“上一步”按钮时,对话框将被取消。

例如,您在屏幕上有一个标准的是/否对话框。如果用户单击“否”,则关闭该对话框,并将“否”的值返回给调用方。如果用户未选择“是”或“否”,而是单击“上一步”以退出对话框而不是进行选择,则该对话框将被取消,并且没有任何值返回给调用者。


谢谢回复。我试图设置如果用户按日期选择器上的“取消”按钮会发生什么。首先,我尝试使用Dismiss侦听器,这种方法很有效,但是如果用户选择了时间,也会发生这种情况。然后我尝试了一个取消监听器,即使我按下了取消,它也从未停止过。你知道我该怎么办吗?
Aal

2
如果您使用的是DatePickerDialog,则应使用OnDateSetListener在日期更改时得到通知。如果有人单击“取消”按钮...,它将不会被调用,对话框将自行消失。对于DatePickerDialog的正常使用,您不需要设置其他侦听器。
李李

仅供参考,后退按钮会同时触发取消监听器和关闭监听器。
市区

28

dismiss是您必须在代码中显式调用的内容,通常是为了响应中的按钮上的click事件Dialog。如果你愿意,你可以调用dismissDialogActivity,这将反过来调用dismissDialog

cancel仅当在您的代码中显式调用该方法时,或者当您的取消Dialog对象处于打开状态时用户按下BACK按钮时,该方法才执行(如@Lee所述)。

如果您使用DatePicker,则所有情况仍然如此。正如@Lee所说,DatePickerDialog.OnDateSetListener只需检测用户何时从中选择了日期DatePicker

Android开发者参考提供更多信息Dialog秒。


您也可以调用该cancel方法。有两种不同的监听器用于取消和取消。
creativecreatororbenot

12

Dismiss调用dismiss可以从屏幕上删除对话框。可以从任何线程安全地调用此方法。请注意,关闭对话框时,您不应覆盖此方法进行清理,而应在onStop中实现该方法

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

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

有关更多信息,请参见此处

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.