У меня есть текст редактирования. Я добавил наблюдателя за текстом в edittext. Я слушаю изменения текста. Если ввод слова начинается с @, я показываю пользовательские предложения (например, когда вы вводите @, а Twitter показывает вам предложения)
Если текст начинается с обычной буквы, все работает нормально.
Например:
hello @random_user how are you
@this also works because there is an empty space before '@'
Этот пример работает.
Однако, если текст начинается со специальных символов, Text Watcher показывает неверные значения. Например:
@hello_user
#someHashtag
наблюдатель текста возвращает ложное значение. Я использую метод onTextChanged
для отслеживания текста
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//Text in edittext is '@user' but I get:
//start = 0, before = 0 and count = 1;
//edittext.getSelectionStart() also returns 1 but cursor is at the end of the line.
//edittext.getText().toString().length() also returns 1 but @user is 5 length.
}
Как я могу это решить?
Изменить: edittext.postdesc.getText().toString()
возвращает только первый символ. Например, если мой текст '@user', метод getText возвращает только @