Odpowiedzi:
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)
Ta metoda jest wywoływana w celu powiadomienia, że gdzieś w środku
s
tekst został zmieniony. Dalsze zmiany ws
tym wywołaniu zwrotnym są uzasadnione , ale należy uważać, aby nie wpaść w nieskończoną pętlę, ponieważ wszelkie wprowadzone zmiany spowodują ponowne wywołanie tej metody rekurencyjnie. (Nie wiesz, gdzie nastąpiła zmiana, ponieważ inne metody afterTextChanged () mogły już wprowadzić inne zmiany i unieważnić przesunięcia. Ale jeśli chcesz wiedzieć tutaj, możesz użyćsetSpan(Object, int, int, int)
in,onTextChanged(CharSequence, int, int, int)
aby oznaczyć swoje miejsce, a następnie spojrzeć w górę, gdzie rozpiętość się skończyła.
public void beforeTextChanged (CharSequence s, int start, int count, int after)
Ta metoda jest wywoływana w celu powiadomienia, że w
s
ciągucount
znaków zaczynającestart
się od zostaną zastąpione nowym tekstem o długościafter
. Próba wprowadzenia zmian ws
tym wywołaniu zwrotnym jest błędem .
public void onTextChanged (CharSequence s, int start, int before, int count)
Metoda ta nazywana jest powiadomić Cię, że w terminie
s
, gdycount
znaki rozpoczynającą sięstart
właśnie zastąpić stary tekst, który miał długośćbefore
. Próba wprowadzenia zmian ws
tym wywołaniu zwrotnym jest błędem .
Prosto z referencji Androida dla TextWatchera .
Android Textwatcher
to jeden rodzaj wyzwalacza, który jest wywoływany przy zmianie tekstu w polu wejściowym.
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.