Добавьте TextWatcher
к EditText
. Когда текст пуст, покажите сообщение об ошибке. Вы даже можете скрыть PositiveButton
внутри TextWatcher
, чтобы пользователь не мог нажать его, когда ввод неверен.
myEditText.addTextChangedListener(new TextWatcher() {
boolean bIgnore = false; // indicates if the change was made by the TextWatcher itself.
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (bIgnore)
return;
bIgnore = true; // prevent infinite loop
if (inputValidated(myEditText.getText().toString()) {
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setVisibility(View.VISIBLE);
errorTextView.setVisibility(View.INVISIBLE);
} else {
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setVisibility(View.INVISIBLE);
errorTextView.setVisibility(View.VISIBLE);
}
bIgnore = false; // release, so the TextWatcher start to listen again.
}
});