-1

キーボードを作成していますが、ローカル変数の使用法にエラーがあります。

 private void updateCandidateText(){
        try{

            ExtractedText r= getCurrentInputConnection().getExtractedText(new ExtractedTextRequest(),InputConnection.GET_EXTRACTED_TEXT_MONITOR);
            String strbeforeCursor="";
            String strafterCursor ="";
                strbeforeCursor = getCurrentInputConnection().getTextBeforeCursor(1000000000, 0).toString();
            strafterCursor = getCurrentInputConnection().getTextAfterCursor(1000000000, 0).toString();
            String str = strbeforeCursor + "|"+strafterCursor;
            if(mTamilPreviewView != null)
                mTamilPreviewView.update(str, strbeforeCursor.length());

            mTamilPreviewView.update(r.text.toString() , 0);
        }
        catch (Exception e) {
            Log.e("t", "errr", e);
        }    
    }
4

1 に答える 1

0

mTamilPreviewView != null呼び出すかどうかをテストします

mTamilPreviewView.update(str, strbeforeCursor.length());

しかし、たとえそれnull

mTamilPreviewView.update(r.text.toString() , 0);

を取得しNullPointerExceptionます。本当にやりたいことですか?ってことじゃない?

if (mTamilPreviewView != null) {
    mTamilPreviewView.update(str, strbeforeCursor.length());
    mTamilPreviewView.update(r.text.toString() , 0);
}

さらに、空文字列で and を初期化し、次の行で別の値を指定しstrbeforeCursorます。strafterCursor単純に削除できます

String strbeforeCursor="";
String strafterCursor ="";

そして、やります

String strbeforeCursor = getCurrentInputConnection().getTextBeforeCursor(1000000000, 0).toString();
String strafterCursor = getCurrentInputConnection().getTextAfterCursor(1000000000, 0).toString();
于 2013-03-01T08:15:32.033 に答える