1

我有下一个问题:

我尝试处理在浏览器中显示的字段中的输入,例如在 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() 调用;

这有什么问题以及如何正确使用此字段?谢谢。

4

1 回答 1

1

此处的链接将此记录为 Android Jellybean 上的一个已知错误。 https://code.google.com/p/android/issues/detail?id=36152#makechanges

我已经尝试了几个操作系统版本,唯一有问题的确实是果冻豆。

一种可能的解决方法是使用 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));
            }
于 2014-08-25T14:43:33.393 回答