Мне нужно обнаружить изменения текста в EditText. Я пробовал TextWatcher, но он не работает так, как я ожидал. Возьмите метод onTextChanged:
public void onTextChanged (CharSequence s, int start, int before, int count)
Скажем, у меня уже есть текст «Джон» в EditText. Если нажать другую клавишу y, «e», s
будет «Johne», start
будет 0, перед
будет 4, а count
будет будет 5. То, как я ожидал, что этот метод будет работать, будет различать между тем, чем был EditText раньше, и тем, чем он скоро станет.
Итак, я ожидал:
s = "Johne"
start = 4 // inserting character at index = 4
before = 0 // adding a character, so there was nothing there before
count = 1 // inserting one character
Мне нужно иметь возможность обнаруживать отдельные изменения каждый раз, когда нажимается клавиша.Итак, если у меня есть текст «John», мне нужно знать, что «e» был добавлен в индекс 4. Если я возвращаю «e», мне нужно знать, что «e» был удален из индекса 4. Если я поместил курсор после «J» "и backspace, мне нужно знать, что" J "был удален из индекса 0. Если я помещаю" G "вместо" J ", я хочу знать, что" G "заменяет" J "в индексе 0.
Как можно Я этого добиваюсь? Я не могу придумать надежного способа сделать это.