Usuń wskaźnik błędu z wcześniej sprawdzonego widżetu EditText

106

Używam widżetu EditText i sprawdzam go za pomocą setError()metody EditText i sprawdza poprawność poprawnie.

Ale mam przycisk na tym samym ekranie, który przekierowuje do innej czynności. A kiedy naciskam przycisk Wstecz i wracam do ekranu, nadal pojawia się potwierdzenie.

Tak więc w OnPauseprzypadku zdarzenia związanego z aktywnością chcę usunąć walidację EditText. Jak to jest możliwe.

Bieg
źródło

Odpowiedzi:

277
protected void onPause () {
    TextView textView = ...; // fetch it as appropriate
    textView.setError(null);
}

Ponieważ jak wspomniano w dokumentacji:

Jeśli błąd jest zerowy, komunikat o błędzie i ikona zostaną wyczyszczone.

Boris Strandjev
źródło
1
Wow, więc poza NullPointerException, wartość null została naprawdę dobrze wykorzystana. LOL
ralphgabb
5

W Kotlinie:

editText.error = null

Funkcja rozszerzenia Kotlin:

Aby uczynić go bardziej czytelnym, możesz dodać tę funkcję rozszerzenia

fun EditText.clearError() {
    error = null
}

W Javie:

editText.setError(null);
Gibolt
źródło
3

Możesz to również zrobić za pomocą:

protected void onPause () {    
    mEditText.setError(null);//removes error
    mEditText.clearFocus();    //clear focus from edittext
}
Aj 27
źródło
2

po prostu umieść .setError(null)na końcu EditText.

mEditText.setError(null);
Sai Gopi Me
źródło
0

W kotlinie możesz po prostu uzyskać dostęp do właściwości za pomocą składni dostępu do właściwości, która jest

protected void onPause () {
    EditText mEditText = ...; // fetch it as appropriate
    mEditText.error = null
}
Rahul Raj
źródło