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

PX *_*per 1 android android-alertdialog

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

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

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

如何AlertDialog取消是否可以控制?使用setCancellable(false)不是一个选项,我希望用户能够取消它.

谢谢!

Ner*_*een 5

尝试设置setOnCancelListener:

 dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {    //close the dialog      
        @Override
        public void onCancel(DialogInterface dialog) {
            //do something
        }
    });
Run Code Online (Sandbox Code Playgroud)