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

いくつかの OS バージョンで試してみましたが、問題があるのは 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));
            }
于 2014-08-25T14:43:33.393 に答える