Android: Walidacja EditText za pomocą TextWatcher i .setError ()
zaimplementowałem prostą walidację dla TextEdit, używając tego kodu:
title = (EditText) findViewById(R.id.title);
title.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
if (title.getText().length() < 1) {
title.setError( "Title is required" );
} else {
title.setError(null);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
});
Funkcja sprawdza, czy jest jakiś tekst wstawiony do zmiany tekstu i wszystko działa doskonale, chyba że umieściłem kursor w już pustym polu tytułu i ponownie nacisnąłem delete. komunikat o błędzie zostanie zresetowany, a obserwator tekstu nie zostanie wywołany, ponieważ nie ma zmiany tekstu. Jak mogę nawet wyświetlić komunikat o błędzie w tym przypadku?