Відповіді:
Ці події називаються в такому порядку:
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 із цього зворотного дзвінка.