Как не дать закрыться AlertDialog при нажатии на PositiveButton по условию
При попытке обработать нажатия кнопки "Регистрация" в AlertDialog не могу не дать закрыться окну. Не важно какую кнопку нажимаешь отмена или регистрация, окно диалога все равно закрывается. Как предотвратить закрытие окна по условию.
public void showRegisterWindow(View view) {
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
LayoutInflater inflater = LayoutInflater.from(this);
View regWindow = inflater.inflate(R.layout.register_form, null);
final TextInputEditText userName = regWindow.findViewById(R.id.userName);
final TextInputEditText phone = regWindow.findViewById(R.id.phone);
dialog.setTitle("Авторизация телефона")
.setMessage("Введите данные для регистрации")
.setView(regWindow)
.setPositiveButton("Регистрация", (dialogInterface, i) -> {
if (TextUtils.isEmpty(userName.getText())) {
Toast.makeText(this, "Введите имя", Toast.LENGTH_LONG).show();
return;
}
// чик-чик код
})
.setNegativeButton("Отмена", (dialogInterface, id) -> dialogInterface.dismiss())
.create();
dialog.show();
}
Даже если вместо обработчика кнопки ставить null все равно закрывается.
Ответы (1 шт):
Автор решения: merlinby
→ Ссылка
Благодоря Arty Morris в соседней ветке переделал код:
public void showRegisterWindow(View view) {
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
LayoutInflater inflater = LayoutInflater.from(this);
View regWindow = inflater.inflate(R.layout.register_form, null);
final TextInputEditText userName = regWindow.findViewById(R.id.userName);
final TextInputEditText phone = regWindow.findViewById(R.id.phone);
dialog.setTitle("Авторизация телефона")
.setMessage("Введите данные для регистрации")
.setView(regWindow)
.setPositiveButton("Регистрация", null)
.setNegativeButton("Отмена", null);
AlertDialog alertDialog = dialog.create();
alertDialog.show();
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> {
if (TextUtils.isEmpty(userName.getText())) {
Toast.makeText(this, "Введите имя", Toast.LENGTH_LONG).show();
} else {
String userString = Objects.requireNonNull(userName.getText()).toString();
String phoneString = Objects.requireNonNull(phone.getText()).toString();
alertDialog.dismiss();
registerUser(userString,phoneString);
}
});
}