我的应用程序中有一个非常奇怪但一致的错误,使用任何支持单词预测的标准 Android 键盘。
我正在做的是InputMethodManager.restartInput()
在评估 an 的输入后调用EditText
以显示不同的 IME 标签(我用 a 检查当前文本,TextWatcher
并在文本为空时将标签设置为“关闭”,当文本为空时设置为“发送”它不是)。不调用restartInput()
IME 标签更改不会被接管,直到连接被重新更新,例如通过再次关闭和重新打开键盘。
现在,当我通过键盘手动输入字符时,一切正常,标签被更改,击键被接受,一切都很好,但是如果我点击某个键盘上的一个预测来粘贴单词,第二次点击预测丢失(即我调用后应该粘贴的单词restartInput()
)。
“丢失”对于不同的键盘意味着不同的东西,例如 SwiftKey 将第一个单词加下划线,然后在点击时用第二个单词替换它,而 Google 的键盘只保留第一个单词,完全忽略第二个单词,然后继续下一个单词.
该视频显示了该问题:https ://puu.sh/v0WUo/8f9b3571ed.mp4
我点击“Test and the”,但EditText
只收到“Test the”。
有人见过这个吗?我究竟做错了什么?