我在我的logcat中得到了以下警告。
getExtractedText on inactive InputConnection
我找不到背后的原因。请帮帮忙
发布于 2013-04-01 01:51:23
我遇到了类似的问题。我的logcat:
W/IInputConnectionWrapper(21214): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper(21214): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper(21214): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper(21214): getTextAfterCursor on inactive InputConnection
...
I/Choreographer(20010): Skipped 30 frames! The application may be doing too much work on its main thread.
我的情况:我有一个用户输入的EditText视图。当用户按下按钮时,EditText将被清除。当我快速按下按钮时,大量非活动的InputConnection条目会源源不断地流出。
例如:
editText.setText(null);
上面的logcat中的最后一行很好地说明了正在发生的事情。果然,清除文本的请求让InputConnection应接不暇。在尝试清除文本之前,我尝试修改代码以检查文本长度:
if (editText.length() > 0) {
editText.setText(null);
}
这有助于缓解这个问题,因为快速按下按钮不再导致IInputConnectionWrapper警告流。然而,当用户在输入内容和按下按钮或在应用程序处于足够负载时按下按钮等之间快速交替时,这仍然容易出现问题。
幸运的是,我找到了另一种清除文本的方法:Editable.clear()。这样,我就不会收到任何警告:
if (editText.length() > 0) {
editText.getText().clear();
}
请注意,如果您希望清除所有输入状态,而不仅仅是文本(autotext、autocap、multitap、undo),您可以使用TextKeyListener.clear(Editable e)。
if (editText.length() > 0) {
TextKeyListener.clear(editText.getText());
}
发布于 2014-03-06 19:49:52
我也有同样的问题。当我的一台EditTexts
中的软键盘被激活,并且活动失去焦点时,将出现警告。
我所做的是将键盘隐藏在onPause()中;
@Override
protected void onPause() {
// hide the keyboard in order to avoid getTextBeforeCursor on inactive InputConnection
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
super.onPause();
}
发布于 2015-04-06 19:20:40
除了antoniom的回答之外,确保任何需要做的进一步操作都是在隐藏键盘之后真正完成的,所以如果你像下面这样隐藏了键盘:
public void hideKeyboard() {
InputMethodManager inputMethodManager =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
}
,您需要在隐藏键盘后执行后续操作,如下所示:
getWindow().getDecorView().post(new Runnable() {
@Override
public void run() {
finish(); //Sample succeeding code
}
});
https://stackoverflow.com/questions/8122625
复制相似问题