Android:取消AlertDialog时执行某些操作

时间:2013-02-04 09:55:03

标签: android alertdialog

我有AlertDialog可以取消(通过后退按钮或在对话框外单击)。如果对话框被取消,我需要撤消一些更改,所以我需要控制它何时被取消。

我尝试创建自己的AlertDialog子类来覆盖某些函数(我想我应该覆盖onContextMenuClosed,我想做一些测试来找到正确的函数)。

我创建了自己的Builder AlertDialog.Builder来创建我的对话框,我想覆盖create()函数。我检查了AlertDialog.Builder->create()代码,它使用变量AlertController.AlertParams P来获取一些所需的数据,但该变量是私有的,我无法从我的构建器访问它,所以我无法创建我的对话框。

如何取消AlertDialog取消?使用setCancellable(false)不是一个选项,我希望用户能够取消它。

谢谢!

2 个答案:

答案 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

        }
    });