android - Dialog 不会在按下按钮时触发关闭监听器

标签 android listener android-dialog

我想向用户显示一个确定取消对话框,我想知道用户是否按下了确定、取消,或者他是否选择通过单击屏幕上的其他地方或按下后退按钮来关闭对话框。

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    final EditText input = new EditText(MainActivity.this);
    builder.setView(input);
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int which)
        {
            // ok stuff
        }
    });
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int which)
        {
            // cancel stuff
        }
    });
    builder.setOnDismissListener(new DialogInterface.OnDismissListener()
    {
        @Override
        public void onDismiss(DialogInterface dialog)
        {
            //dismiss stuff
        }
    });
    builder.show();

这里的问题是,每当用户按下 ok 按钮时,dismiss listener 会立即被触发。如果用户按下按钮,有什么办法不触发 dismiss listener 吗?

我知道我可以使用 bool 标志,但我希望实际上有一个优雅的解决方案。

我不是在寻找有关如何防止对话被关闭的解决方案。我正在寻找有关如何防止在按下确定按钮并关闭对话框时触发关闭监听器的解决方案。

最佳答案

我想你需要的是setOnCancelListener() .

关于android - Dialog 不会在按下按钮时触发关闭监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50819473/

相关文章:

android,gson无法将json字符串解析为java对象

java - 如何在 Hibernate 4 实体上设置事件监听器?

android - 显示对话框后或 EditText 获得焦点时,隐藏的导航栏(带有主页、后退和概览按钮的底部栏)可见

android - AAPT.EXE 在 eclipse(ANDROID) 中停止运行

java - token "boolean"出现语法错误,表达式无效

java - 两次启动另一个 Activity 时,线程不更新 textview

javascript - 在 javascript 中使用现有函数注册新的动态创建的元素

android - 一个 OnGestureListener 对象可以处理两个 GestureDetector 对象吗?

android - Espresso : Assert a Dialog is not shown

android - 单击对话框中的编辑文本框。隐式键盘必须隐藏