默认情况下禁用AlertDialog的确认按钮

15

如何默认禁用安卓 AlertDialog 的正按钮?

在用户更改视图之前(在此示例中为 EditText),默认情况下禁用正按钮(在此情况下为“保存”)似乎非常正常。

我知道可以通过调用 dialog.getButton(DialogInterface.BUTTON_POSITIVE) 来获取按钮,但如果尚未调用 show(),则此调用将返回 null。


你尝试在 show 之前调用了 create 吗? - George Daramouskas
你可能最好使用DialogFragment类来制作自定义对话框。 - ElliotM
它包含在一个DialogFragment类中。 - Joakim
你能否给我们展示一些代码? - ci_
2个回答

29
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.setOnShowListener(new OnShowListener() {

    @Override
    public void onShow(DialogInterface dialog) {
        if(condition)
        ((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
    }
});

dialog.show();

8

要访问警告对话框的按钮,您需要调用show()。因此,在调用alertDialog的show()后,您可以获取负按钮并将其禁用,像这样:

AlertDialog.Builder builder = new AlertDialog.Builder(getContext())
            .setTitle("Title")
            .setMessage("Message")
            .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                }
            })
            .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                }
            })
            .setIcon(android.R.drawable.ic_dialog_alert);
    AlertDialog d = builder.show();
    d.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);

因此,它的负面按钮默认变为禁用状态。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接