Документация afterTextChanged гласит:
Этот метод вызывается, чтобы уведомить вас, что где-то в пределах s текст был изменен.Вполне допустимо вносить дальнейшие изменения в s из этого обратного вызова, , но будьте осторожны, чтобы не попасть в бесконечный цикл, потому что любые внесенные вами изменения приведут к повторному вызову этого метода рекурсивно .(Вам не сказано, где произошло изменение, потому что другие методы afterTextChanged (), возможно, уже внесли другие изменения и сделали недействительными смещения. Но если вам нужно знать здесь, вы можете использовать setSpan(Object, int, int, int)
в onTextChanged(CharSequence, int, int, int)
, чтобы отметить ваше место изатем посмотрите отсюда, где закончился промежуток.
Итак, с каждым s.append("A")
вы call afterTextChanged()
снова и т. д.