【问题标题】:AlertDialog dismissed by empty onClick [duplicate]空的 onClick 解除了 AlertDialog [重复]
【发布时间】:2015-07-18 05:23:31
【问题描述】:

下面的代码定义了一个带有 2 个按钮的 AlertDialog。单击任一按钮调用正确的onClick 方法。实际上,每个方法都只有一个 Log 语句,但单击任一方法都会导致对话框被关闭。为什么?

AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setPositiveButton("Dismiss",
        new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.d("MyFragment", "Positive button");
            }
        }).setIcon(android.R.drawable.ic_dialog_info);

builder.setNeutralButton("Send Email",
        new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.d("MyFragment", "Neutral button");
            }
        }).setIcon(android.R.drawable.ic_dialog_info);
builder.setMessage("Some message");
builder.setCancelable(false);

Dialog dialog = builder.create();
dialog.setTitle("Details");
dialog.setCancelable(false);
dialog.show();

【问题讨论】:

标签: android android-alertdialog


【解决方案1】:

尝试添加这个.setCancelable(false)

编辑: 好吧,那没用,显然this 成功了。 ;)

【讨论】:

【解决方案2】:

对话框被关闭,因为这是它的默认行为。如果您希望它保留,您可以覆盖 onShowListener 并在那里设置适当的按钮单击侦听器。

final AlertDialog dialog = builder.create();
    dialog.setOnShowListener(new DialogInterface.OnShowListener() {
        @Override
        public void onShow(DialogInterface d) {
            dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(...);
        }
    });

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多