我有下一个问题:
我尝试在浏览器中显示的字段中处理输入,例如在www.google.com中搜索的文本字段中。但是对于Android 4.1.2及更高版本,这类字段可以解决InputConnection的一些问题。
- it return null for ic.getExtractedText() however ic.getTextBeforeCursor() return normal value;
- when i use ic.sendKeyEvent() for backspace it doesn't make effect until call ic.endBatchEdit();
但对于常规edittext或在Android 2.3.3中,它会返回正确的值并立即删除最后一个字符,甚至直到endBatchEdit()调用;
这有什么问题以及如何正确使用这些字段? 感谢。
答案 0 :(得分:1)
此处的链接将此记录为Android Jellybean上的已知错误。 https://code.google.com/p/android/issues/detail?id=36152#makechanges
我已经尝试了几个操作系统版本,唯一有问题的是Jelly Bean。
可能的解决方法是使用getTextBeforeCursor()方法,使用相当大的值作为要获取的字符数。
在文本字段中查找光标位置的示例如下:
//try with getExtractedText
extr=ic.getExtractedText(new ExtractedTextRequest(), 0);
if(extr!=null)
Log.w("Cursor Pos", "OnKey "+extr.selectionStart);
else
{
String s =ic.getTextBeforeCursor(9999, 0).toString();
if (s==null)
//nothing can be obtained
else
Log.w("Cursor Pos", "OnKey "+(s.length()-1));
}