-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);
}

此外,你用一个空字符串初始化strbeforeCursorstrafterCursor,然后在下一行给它们其他值。你可以简单地删除

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

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