Відповіді:
Ці події називаються в такому порядку:
beforeTextChanged (CharSequence s, int start, int count, int after) .
Це означає, що символи ось-ось будуть замінені на якийсь новий текст. Текст не піддається редагуванню.
Використання: коли вам потрібно подивитися старий текст, який збирається змінити.
onTextChanged (CharSequence s, int start, int раніше, int count) .
Були внесені зміни, деякі символи щойно замінені. Текст не піддається редагуванню.
Використання: коли вам потрібно побачити, які символи в тексті є новими.
afterTextChanged (Можна редагувати) .
Те саме, що вище, за винятком редагування тексту .
Використання: коли вам потрібно переглянути та, можливо, відредагувати новий текст.
Якщо я просто слухаю зміни EditText, мені не потрібно буде використовувати перші два методи взагалі. Я просто отримаю нові значення в третьому методі і виправляю новий текст, якщо потрібно. Однак, якби мені довелося відслідковувати точні зміни, які відбуваються зі значеннями, я б застосував перші два методи. Якби у мене також була потреба редагувати текст після прослуховування змін, я б це зробив у третьому методі.
публічна недійсність afterTextChanged (Можна редагувати)
Цей метод покликаний повідомити вас про те, що десь усередині
sтекст змінено. Законно вносити подальші зміниsз цього зворотного дзвінка, але будьте обережні, щоб не потрапити в нескінченний цикл, оскільки будь-які зміни, які ви внесете, призведуть до повторного виклику цього методу. (Ви не сказали , де зміна відбулася тому , що інші afterTextChanged () методу , можливо , вже зробили інші зміни і визнані недійсними корекції. Але якщо вам потрібно знати тут, ви можете використовуватиsetSpan(Object, int, int, int)в ,onTextChanged(CharSequence, int, int, int)щоб відзначити своє місце , а потім подивитися тут , де пробіг закінчився.
public void beforeTextChanged (CharSequence s, int start, int count, int after)
Цей метод викликається , щоб повідомити вас , що, в межах
s, тоcountсимволи , що починаються наstartзбираєтеся замінити новим текстом з довжиноюafter. Помилка спроби внести зміни доsцього зворотного дзвінка.
public void onTextChanged (CharSequence s, int start, int before, int count)
Цей метод викликається , щоб повідомити вас , що, в межах
s, тоcountсимволи , що починаються наstartтільки що замінили старий текст , який мав довжинуbefore. Помилка спроби внести зміни доsцього зворотного дзвінка.
Прямо з посилання Android на TextWatcher .
Android Textwatcherє одним з видів тригера, який викликається при зміні тексту поля введення.
afterTextChanged (Editable s)- Цей метод викликається, коли текст змінено. Оскільки будь-які внесені вами зміни призведуть до повторного виклику цього методу, вам слід бути уважним до виконання тут операцій, інакше це може призвести до нескінченного циклу .
onTextChanged (CharSequence s, int start, int before, int count)- Цей метод покликаний повідомити вас про те, що протягом s символи, що починаються з початку, просто замінили старий текст, що мав довжину раніше. Помилка спроби внести зміни до s із цього зворотного дзвінка.