TextWatcher Для Андроид.afterTextChanged против TextWatcher.метода ontextchanged
при каких обстоятельствах я должен использовать afterTextChanged
вместо onTextChanged
и наоборот? Примеры были бы наиболее поучительными с вниманием к why onTextChanged
должно быть переопределено, но afterTextChanged
и beforeTextChanged
не должны быть переопределены.
3 ответов
эти события вызываются в следующем порядке:
beforeTextChanged(объект CharSequence с начала инт считать интервал, интервал после).
Это означает, что символы будут заменены каким-то новым текстом. текст не редактируется.
использование: когда нужно взглянуть на старый текст, который меняется.onTextChanged(CharSequence s, int start, int before, int граф).
Были внесены изменения, некоторые символы были просто заменены. текст не редактируется.
использование: когда вам нужно видеть, какие символы в тексте новые.afterTextChanged (редактируемые s).
То же, что и выше, только теперь текст доступен для редактирования.
использование: когда вам нужно увидеть и, возможно, отредактировать новый текст.
Если я просто слушаю изменения в EditText
, Мне не нужно будет использовать первые два метода вообще. Я просто получу новые значения в третьем методе и при необходимости исправлю новый текст. Однако, если бы мне пришлось отслеживать точные изменения, которые происходят со значениями, я бы использовал первые два метода. Если бы у меня также была необходимость редактировать текст после прослушивания изменений, я бы сделал это в третьем методе.
public void afterTextChanged (редактируемые s)
этот метод вызывается, чтобы уведомить вас, что где-то в
s
текст был изменен. Правомерно вносить дальнейшие изменения вs
из этого обратного вызова, но будьте осторожны, чтобы не попасть в бесконечный цикл, потому что любые изменения, которые вы сделаете, вызовут этот метод снова рекурсивно. (Вам не говорят, где произошло изменение, потому что другие методы afterTextChanged() возможно, уже внесены другие изменения и аннулированы смещения. Но если вам нужно знать здесь, вы можете использоватьsetSpan(Object, int, int, int)
наonTextChanged(CharSequence, int, int, int)
чтобы отметить свое место, а затем посмотреть отсюда, где закончился пролет.
общественного недействительными beforeTextChanged(объект CharSequence с начала инт считать интервал, интервал после)
этот метод вызывается, чтобы уведомить вас об этом, в пределах
s
, thecount
символы в началеstart
будут заменены новым текстом с длинойafter
. Это ошибка, чтобы попытаться внести изменения вs
от этого обратного вызова.
общественного недействительными метода ontextchanged(CharSequence оцените, начнем интервал, интервал перед, граф инт)
этот метод вызывается, чтобы уведомить вас об этом, в пределах
s
, thecount
символы в началеstart
только что заменили старый текст, который имел длинуbefore
. Это ошибка, чтобы попытаться внести изменения вs
от этого обратный звонок.
Android Textwatcher
один вид триггера, который называется об изменении текста поля ввода.
afterTextChanged (Editable s)
- этот метод вызывается при изменении текста. Поскольку любые изменения, которые вы сделаете, вызовут этот метод снова рекурсивно, вы должны следить за выполнением операций здесь, иначе это может привести к бесконечность петля.
onTextChanged (CharSequence s, int start, int before, int count)
- этот метод вызывается, чтобы уведомить вас о том, что в пределах s символы count, начинающиеся при запуске, только что заменили старый текст, который имел длину раньше. Попытка внести изменения в s из этого обратного вызова является ошибкой.