Итак, у меня есть меню, которое появляется при нажатии кнопки. В этом меню пользователь может ввести «Assignment Name», которое может быть строкой, и «Grade» и «Max Points Available», которые будут числами. Теперь я хочу убедиться, что Пользователь ничего не вводит или null
в любом из этих полей EditText. Таким образом, есть способ отключить кнопку OK
, пока не будет введен правильный ввод. Ниже приведено изображение того, как выглядит всплывающее окно.Android: отключить кнопку OK AlertDialogBuilder в определенных условиях.
Ниже мой код в MainActivity
Button add = (Button)findViewById(R.id.addBtn);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
LayoutInflater li = LayoutInflater.from(context);
View promptsView = li.inflate(R.layout.add_individual_name, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder.setView(promptsView);
final EditText assignmentName = (EditText) promptsView.findViewById(R.id.enteredIndividualName);
final EditText gradeReceived = (EditText) promptsView.findViewById(R.id.enteredUserGrade);
final EditText maxPoints = (EditText) promptsView.findViewById(R.id.enteredMaxPoints);
alertDialogBuilder.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
String name = assignmentName.getText().toString();
String grade = gradeReceived.getText().toString();
String totalPossible = maxPoints.getText().toString();
checkIfNameAlreadyExists(name);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
final AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}});
Кроме того, я хочу, чтобы отключить кнопку "OK", если "Назначение Name" уже существует в моей базе данных. У меня есть функция, которая проверяет, выходит ли элемент в БД.
Сообщите мне, если вы хотите увидеть код для XML AlertDialog
или еще что-нибудь еще.
Благодаря
Спасибо, что ответили. Но где именно я помещаю этот блок кода? Если я поставлю его перед строкой 'alertDialogBuilder.setCancelable (false)', тогда кнопка «ОК» просто исчезнет, и если я поместил ее после этой строки, то это не повлияет. –
попробуйте поместить блок кода, как мой ответ (после окончательного предупреждения AlertDialogDialog = alertDialogBuilder.create(); alertDialog.show();) –
Это работало отлично, как я и ожидал. Большое спасибо! –