1

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

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

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

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

谢谢!

4

2 回答 2

5

尝试设置setOnCancelListener

 dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {    //close the dialog      
        @Override
        public void onCancel(DialogInterface dialog) {
            //do something
        }
    });
于 2013-02-04T09:57:11.380 回答
1

您必须以这种方式设置 onCancelListener:

alertDialog.setOnCancelListener(new OnCancelListener() {

        @Override
        public void onCancel(DialogInterface dialog) {
            // YOUR CODE HERE

        }
    });
于 2013-02-04T09:58:38.723 回答