我遇到一个奇怪的问题,影响软键盘正常工作。
我的应用程序中没有单个EditText视图,或者以某种方式使用键盘,但不知何故,在多个设备上安装我的应用程序后,使用它然后返回使用设备,软键盘停止工作,这让我疯狂......
用户看到的是,当他/她点击软键盘中的字符按钮时,EditText中的每个应用都没有显示任何内容。就像我说的那样,奇怪的问题会影响整个系统,用户也无法写任何东西。
我的应用程序包含所有类型的功能,所有功能都在使用standered API,所以我不明白我该怎么做,或者至少触发它。
当键盘不工作且用户点击键盘按钮时,您可以在logcat中看到:
WARN/IInputConnectionWrapper(1628): sendKeyEvent on inactive InputConnection
WARN/IInputConnectionWrapper(1628): getCursorCapsMode on inactive InputConnection
WARN/IInputConnectionWrapper(1628): endBatchEdit on inactive InputConnection
InputConnection如何变为非活动状态并且有没有办法激活它?
我想知道是否有人遇到过这种问题,原因是什么?
答案 0 :(得分:5)
看起来您的输入连接未正确关闭。我有类似的问题,并按照以下方式修复:
EditText editTextLogin = (EditText) findViewById(R.id.editTextLogin);
editTextLogin.requestFocus();
InputMethodManager inputManager = (InputMethodManager)context.getSystemService(INPUT_METHOD_SERVICE);
inputManager.restartInput(editTextLogin);
答案 1 :(得分:3)
我的nexus 7和samsung s3也遇到了同样的问题。我用android 4.4构建了应用程序。通常键盘没有第一次出现或者如果我隐藏键盘再也没有出现过。
问题来源是android:textIsSelectable="true"
。如果我从所有editText
中删除,则此错误消失。
答案 2 :(得分:1)
我在某些设备上遇到了类似的问题。在更改我的代码2天后,我发现问题的根源是android:selectAllOnFocus="true"
EditText
答案 3 :(得分:-3)
1)您是否尝试过覆盖onPause并使用以下命令删除应用的任何签名:
System.runFinalizersOnExit(true);
System.exit(1);
我很好奇,如果这没有帮助,你能真正证明这是你的应用程序导致挂断吗?
2)您是否自己实现了任何类型的InputConnection?
即使不是因为某些原因你的应用程序可能挂起其中一个,here的引用也可能与你的问题有关(焦点):
*只有活动客户端的InputConnection才会接受操作。该 IMF告诉每个客户端进程它是否处于活动状态以及框架 强制在非活动进程中调用当前的进程 InputConnection将被忽略。这确保了当前的IME可以 仅将事件和文本编辑传递给用户看到的UI 成为焦点。