我一直在环顾四周,找不到任何东西,所以我不知道它是否可能,但是有没有办法为 alertdialogs 做一些关闭的事情?
在我的情况下,当对话框作为暂停屏幕启动时,我暂停了后台 UI。如果您单击对话框中的按钮,它将运行 onClick 内容,因此我将其取消暂停,但如果他们单击对话框,它将关闭对话框但不运行 onClick。当他们点击到一边时,有什么东西可以运行吗?谢谢!
我一直在环顾四周,找不到任何东西,所以我不知道它是否可能,但是有没有办法为 alertdialogs 做一些关闭的事情?
在我的情况下,当对话框作为暂停屏幕启动时,我暂停了后台 UI。如果您单击对话框中的按钮,它将运行 onClick 内容,因此我将其取消暂停,但如果他们单击对话框,它将关闭对话框但不运行 onClick。当他们点击到一边时,有什么东西可以运行吗?谢谢!
您可以设置一个onDismissListener()
在对话消失时收听。文档。
您可以使用onDismissListener()
,但它是在更高的 API 中引入的,因此与旧的 API 不兼容。你可以onCancel()
改用。
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("My Titile");
alertDialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
//your logic
}
});
这样做的唯一方法是不使用 AlertDialog.Builder 而是创建一个 PopupWindow 子类。
可以在第 37 行找到一个很好的例子: https ://github.com/lorensiuswlt/NewQuickAction/blob/master/src/net/londatiga/android/PopupWindows.java
您可以使用 setCanceledOnTouchOutside(false) 强制用户单击取消按钮。您也可以(如果您使用 DialogFragment)覆盖 onDetach() 方法。最后你可以设置一个解雇监听器。