Программная клавиатура теряет прогноз после restartInput()
У меня очень странная, но постоянная ошибка в моем приложении с любой стандартной клавиатурой Android, которая поддерживает предсказания слов.
То, что я делаю, это то, что я называю InputMethodManager.restartInput()
после того, как я оценил вклад EditText
чтобы показать другую метку IME (я проверяю текущий текст с TextWatcher
и установите метку "Закрыть", если текст пустой, и "Отправить", если его нет). Без звонка restartInput()
изменение метки IME не вступает в силу до тех пор, пока соединение не будет возобновлено, например, при повторном закрытии и повторном открытии клавиатуры.
Теперь, когда я вручную вводю символы через клавиатуру, все в порядке, как и ожидалось, метки меняются, нажатия клавиш принимаются, все хорошо, но если я нажимаю на одно из предсказаний на клавиатуре, чтобы вставить слово, второй щелчок на предсказании теряется (то есть слово, которое должно быть вставлено после того, как я позвонил restartInput()
).
"Потерянный" означает разные вещи для разных клавиатур. Например, SwiftKey сохраняет первое слово подчеркнутым, а затем заменяет его вторым словом при нажатии, в то время как клавиатура Google просто сохраняет первое слово, полностью игнорирует второе слово и затем продолжает любое следующее слово.,
Это видео показывает проблему: https://puu.sh/v0WUo/8f9b3571ed.mp4
Я нажимаю "Тест и картинка", но EditText
только получает "Test the".
Кто-нибудь видел это раньше? Что я делаю неправильно?