Непонятное поведение editable.replace(...)

Рейтинг: 0Ответов: 1Опубликовано: 30.04.2015

Есть Spannable текстовое поле ввода. Для него необходимо поменять часть текста. Делаю так:

{
    Editable editable = getText();
    editable.replace(start, end, "");
}

В итоге текст удаляется, но при вводе любого символа текст возвращается в самый конец поля ввода.
Пробовал добавлять TextWatcher, в итоге:

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    //Тут текст корректный, с удаленными символами
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    //А тут уже текст некорректный. Вырезанная строка добавляется в конец 
}

@Override
public void afterTextChanged(Editable s) {
    //Так же как в onTextChanged
}

Проявляется не везде, пока замечено только на планшетах Samsung с Android 4.1.2. Почему так происходит и что делать?

Ответы

▲ 1

Попробуйте перед изменением текста editable сделать removeTextChangedListener() а после снова добавить addTextChangedListener() чтобы избавиться от рекурсивных вызовов.