Программная клавиатура теряет прогноз после restartInput()

У меня очень странная, но постоянная ошибка в моем приложении с любой стандартной клавиатурой Android, которая поддерживает предсказания слов.

То, что я делаю, это то, что я называю InputMethodManager.restartInput() после того, как я оценил вклад EditText чтобы показать другую метку IME (я проверяю текущий текст с TextWatcher и установите метку "Закрыть", если текст пустой, и "Отправить", если его нет). Без звонка restartInput() изменение метки IME не вступает в силу до тех пор, пока соединение не будет возобновлено, например, при повторном закрытии и повторном открытии клавиатуры.

Теперь, когда я вручную вводю символы через клавиатуру, все в порядке, как и ожидалось, метки меняются, нажатия клавиш принимаются, все хорошо, но если я нажимаю на одно из предсказаний на клавиатуре, чтобы вставить слово, второй щелчок на предсказании теряется (то есть слово, которое должно быть вставлено после того, как я позвонил restartInput()).

"Потерянный" означает разные вещи для разных клавиатур. Например, SwiftKey сохраняет первое слово подчеркнутым, а затем заменяет его вторым словом при нажатии, в то время как клавиатура Google просто сохраняет первое слово, полностью игнорирует второе слово и затем продолжает любое следующее слово.,

Это видео показывает проблему: https://puu.sh/v0WUo/8f9b3571ed.mp4

Я нажимаю "Тест и картинка", но EditText только получает "Test the".

Кто-нибудь видел это раньше? Что я делаю неправильно?

0 ответов

Другие вопросы по тегам