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 из этого обратного вызова является ошибкой.