При каких обстоятельствах я должен использовать afterTextChanged
вместо onTextChanged
и наоборот?
При каких обстоятельствах я должен использовать afterTextChanged
вместо onTextChanged
и наоборот?
Эти события вызываются в следующем порядке:
beforeTextChanged (CharSequence s, начало целого числа, число целых чисел, интервал после) .
Это означает, что символы скоро будут заменены каким-то новым текстом. Текст не редактируется.
Использование: когда вам нужно взглянуть на старый текст, который скоро изменится.
onTextChanged (CharSequence s, int start, int до, int count) .
Внесены изменения, только что заменены некоторые персонажи. Текст не редактируется.
Использование: когда вам нужно увидеть, какие символы в тексте новые.
afterTextChanged (редактируемые) .
То же, что и выше, только теперь текст можно редактировать .
Использование: когда вам нужно увидеть и, возможно, отредактировать новый текст.
Если я просто прислушиваюсь к изменениям EditText
, мне вообще не нужно использовать первые два метода. Я просто получу новые значения в третьем методе и при необходимости исправлю новый текст. Однако, если бы мне пришлось отслеживать точные изменения, которые происходят со значениями, я бы использовал первые два метода. Если бы мне также понадобилось отредактировать текст после прослушивания изменений, я бы сделал это третьим способом.
public void afterTextChanged (редактируемые)
public void beforeTextChanged (CharSequence s, int start, int count, int после)
public void onTextChanged (CharSequence s, int start, int before, int count)
Прямо из справочника Android по TextWatcher .
источник
afterTextChanged (Editable s)
- Этот метод вызывается при изменении текста. Поскольку любые внесенные вами изменения приведут к повторному вызову этого метода рекурсивно, вы должны внимательно следить за выполнением операций здесь, иначе это может привести к бесконечному циклу .onTextChanged (CharSequence s, int start, int before, int count)
- Этот метод вызывается, чтобы уведомить вас о том, что в s символы count, начинающиеся с start, только что заменили старый текст, который имел длину раньше. Попытка внести изменения в s из этого обратного вызова является ошибкой.источник