在警报对话框构建器中禁用正按钮

时间:2017-02-21 11:58:48

标签: android android-alertdialog

我创建了一个警告对话框构建器,在对话框中显示一个表单,我的正面按钮名称是提交我希望按钮被禁用,除非表单中的所有字段都被填充.Below是我的代码可以任何人帮助我在周围工作这个。 感谢

        alertDialogBuilder.setPositiveButton("SAVE", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    nameInput1 = data_txt1.getText().toString();
                    nameInput2 = data_txt2.getText().toString();
                    nameInput3 = data_txt3.getText().toString();
                    nameInput4 = data_txt4.getText().toString();
                    nameInput5 = data_txt5.getText().toString();

                    nameInput6 = auto_txt1.getText().toString();
                    nameInput7 = auto_txt2.getText().toString();
                    nameInput8 = auto_txt3.getText().toString();
                    nameInput9 = auto_txt4.getText().toString();
                    nameInput10 = auto_txt5.getText().toString();
                    nameInput11 = auto_txt6.getText().toString();
                    nameInput12 = auto_txt7.getText().toString();
                    nameInput13 = auto_txt8.getText().toString();
                    nameInput14 = auto_txt9.getText().toString();

                    nameInput15 = data_txt6.getText().toString();
                    nameInput16 = data_txt7.getText().toString();



                        Call<Void> completeQuestionnaireCall = spreadsheetWebService.completeQuestionnaire(nameInput1, nameInput2, nameInput3, nameInput4, nameInput5, nameInput6, nameInput7, nameInput8, nameInput9, nameInput10, nameInput11, nameInput12, nameInput13, nameInput14, nameInput15, nameInput16);
                        completeQuestionnaireCall.enqueue(callCallback);
                        dialog.dismiss();

                    }



                }
            });

    alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();

        }
    });

    alertDialogBuilder.show();
}

6 个答案:

答案 0 :(得分:1)

您也可以这样做:

new AlertDialog.Builder(this)
    .setMessage("This may take a while")
    .setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
         ((AlertDialog)dialog).getButton(which).setVisibility(View.INVISIBLE);
         // the rest of your stuff
    }
})
    .show();

答案 1 :(得分:0)

试试这个

alertDialogBu​​ilder.create()getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(假);

答案 2 :(得分:0)

对于正面按钮,使用可以这样做:

dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);

并且,对于否定按钮:

dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);

答案 3 :(得分:0)

你可以这样做:

    ....your code for alert dialog
    AlertDialog dialog = b.create(); // here b is reference of AlertDialog.Builder and in your case replace b with alertDialogBuilder
    dialog.show();
    Button button = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
    button.setEnabled(false);

希望这会有所帮助。

答案 4 :(得分:0)

如果我理解你的要求,

您可以使用TextWatcher ..

它是如何工作的:
添加textwatcher作为文本更改的监听器到您的输入字段,它将确保动态检查那些被填充的&#39;并且您可以关联按钮的可见性或相应地启用/禁用它

有助于提出的问题:
1. Disable button when edittext fields are empty
2. Use on text changed listener

答案 5 :(得分:0)

创建一个方法,该方法将检查Utils类中的所有输入,或者可以在当前类中使用它

public static boolean checkifEmptyText(String[] fields,Context context) {
    for (String currentField : fields) {
        if (currentField.getText().toString().trim().length() <= 0) {
            return false;
        }
    }
    return true;
}

现在就像这样检查

if(checkifEmptyText(new String[]{all your strings}),context)
{
 Button button = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
button.setEnabled(true);
}
else
{
Button button = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
button.setEnabled(false);
}