W jakich okolicznościach powinienem używać afterTextChanged
zamiast onTextChanged
i odwrotnie?
źródło
W jakich okolicznościach powinienem używać afterTextChanged
zamiast onTextChanged
i odwrotnie?
Te zdarzenia są wywoływane w następującej kolejności:
beforeTextChanged (CharSequence s, int start, int count, int after) .
Oznacza to, że znaki zostaną zastąpione jakimś nowym tekstem. Tekst jest nieedytowalny.
Zastosowanie: gdy chcesz spojrzeć na stary tekst, który ma się zmienić.
onTextChanged (CharSequence s, int start, int before, int count) .
Dokonano zmian, niektóre postacie zostały właśnie zastąpione. Tekst jest nieedytowalny.
Użyj: gdy chcesz zobaczyć, które znaki w tekście są nowe.
afterTextChanged (Edytowalne s) .
Tak samo jak powyżej, z wyjątkiem tego, że teraz tekst jest edytowalny .
Użyj: kiedy chcesz zobaczyć i ewentualnie edytować nowy tekst.
Jeśli tylko nasłuchuję zmian w programie EditText
, w ogóle nie będę musiał używać pierwszych dwóch metod. Po prostu otrzymam nowe wartości w trzeciej metodzie i poprawię nowy tekst, jeśli będzie to konieczne. Gdybym jednak musiał wyśledzić dokładne zmiany, które zachodzą w wartościach, użyłbym dwóch pierwszych metod. Gdybym miał też potrzebę edycji tekstu po wysłuchaniu zmian, zrobiłbym to w trzeciej metodzie.
public void afterTextChanged (s do edycji)
public void beforeTextChanged (CharSequence s, int start, int count, int after)
public void onTextChanged (CharSequence s, int start, int before, int count)
Prosto z referencji Androida dla TextWatchera .
źródło
afterTextChanged (Editable s)
- Ta metoda jest wywoływana, gdy tekst został zmieniony. Ponieważ wszelkie wprowadzone zmiany spowodują ponowne wywołanie tej metody rekurencyjnie, należy uważać na wykonywanie tutaj operacji, w przeciwnym razie może to doprowadzić do nieskończonej pętli .onTextChanged (CharSequence s, int start, int before, int count)
- Ta metoda jest wywoływana w celu powiadomienia, że w ciągu s liczba znaków rozpoczynających się na początku właśnie zastąpiła stary tekst, który miał wcześniej długość. Próba wprowadzenia zmian do s z tego wywołania zwrotnego jest błędem.źródło