我有AlertDialog
可以取消(通过后退按钮或在对话框外单击)。如果对话框被取消,我需要撤消一些更改,所以我需要控制它何时被取消。
我尝试创建自己的AlertDialog
子类来覆盖某些函数(我想我应该覆盖onContextMenuClosed
,我想做一些测试来找到正确的函数)。
我创建了自己的Builder AlertDialog.Builder
来创建我的对话框,我想覆盖create()
函数。我检查了AlertDialog.Builder->create()
代码,它使用变量AlertController.AlertParams
P来获取一些所需的数据,但该变量是私有的,我无法从我的构建器访问它,所以我无法创建我的对话框。
如何取消AlertDialog
取消?使用setCancellable(false)
不是一个选项,我希望用户能够取消它。
谢谢!
答案 0 :(得分:5)
尝试设置setOnCancelListener
:
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { //close the dialog
@Override
public void onCancel(DialogInterface dialog) {
//do something
}
});
答案 1 :(得分:1)
您必须以这种方式设置onCancelListener:
alertDialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// YOUR CODE HERE
}
});