【问题标题】:Dialog doesn't trigger the dismiss listener on a button press对话框不会在按下按钮时触发关闭侦听器
【发布时间】:2018-11-21 23:42:00
【问题描述】:

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

    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();

这里的问题是,每当用户按下确定按钮时,就会立即触发关闭侦听器。如果用户按下按钮,有什么方法可以不触发关闭侦听器?

我确实意识到我可以使用布尔标志,但我希望实际上有一个优雅的解决方案。

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

【问题讨论】:

  • @ADM 这是怎么复制的?您是否正确阅读了问题?用户只想避免 onDismiss for Ok 和 Cancel 按钮按下。
  • 是的,我正确地阅读了这个问题。这就是我的想法。无论如何都会调用 Dismiss Listener。

标签: android listener android-dialog


【解决方案1】:

setOnDismissListener() 将因任何原因而被调用。这意味着如果对话框由于按下确定/取消按钮或屏幕触摸或返回按钮或主页按钮而从屏幕上消失,将调用setOnDismissListener()

设置当对话框被关闭时将调用的回调 任何理由。

如果您有兴趣聆听对话所在的所有情况 解雇,而不仅仅是在取消时,请参阅setOnDismissListener

所以解决你提到的问题,使用一些布尔标志检查并处理它。

【讨论】:

    【解决方案2】:

    您可以在关闭后再次显示该对话框!

    【讨论】:

    • 你没有理由在这里做出两个不同的答案。编辑您的原件并删除这个。
    【解决方案3】:

    你可以试试CustomViewDialog使用

    LayoutInflater myDialog = getLayoutInflater();
            
    View convertView = (View) myDialog.inflate(R.layout.MyLayoutXmlFile, null);
    

    也不要使用positivenegative 按钮,仅在对话框布局中使用按钮。

    【讨论】:

      【解决方案4】:

      我想你需要的是setOnCancelListener()

      【讨论】:

        猜你喜欢
        • 2013-04-15
        • 1970-01-01
        • 2011-11-30
        • 2022-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多