Android软键盘无法正常工作

时间:2011-09-01 06:15:39

标签: android keyboard

我遇到一个奇怪的问题,影响软键盘正常工作。

我的应用程序中没有单个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如何变为非活动状态并且有没有办法激活它?

我想知道是否有人遇到过这种问题,原因是什么?

4 个答案:

答案 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   成为焦点。