마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

IME 한글 키보드 질문

0 추천
public void commitText(final CharSequence text, final int i) {
        mCommittedTextBeforeComposingText.append(text);
        mCurrentCursorPosition += text.length() - mComposingText.length();
        mComposingText.setLength(0);
        if (null != mIC) {
         //mIC.getExtractedText( null, ExtractedTextRequest.PARCELABLE_WRITE_RETURN_VALUE);
            mIC.commitText( mHangulAutomata.encode(mCommittedTextBeforeComposingText.toString()), mComposingText.length());
            if (ProductionFlag.IS_EXPERIMENTAL) {
                ResearchLogger.richInputConnection_commitText(text, i);
            }
        }
    }

 

소스에서 처럼 키값을 받아 버퍼에 저장후 연결된 뷰에 버퍼에저장된 text를 인코딩하여 보내고 있습니다.

 

그런데 저렇게 하니까 문제가 있네요..

 

만약에 "테스트"라는 글자를 입력하면

ㅌ테텟테스테슽테스트 이렇게 적힙니다.

이유는 글자가 입력받을때마다 commit을 해주니까

이전에 있던 ㅌ에 ㅔ를 붙여 ㅌ+테 이런식으로 계속 추가 되요.

 

이런경우 정상적으로 입력을하려면.. 어떻게 해줘야할까요 ??

 

아니면 commit 을 모두 지우는 방법있나여 ??

 

now882002 (3,860 포인트) 님이 2015년 1월 15일 질문
now882002님이 2015년 1월 15일 수정
Android Developer 에서 commitText() 메소드에 대한 설명으로 다음과 같은 문장이 있습니다.
This method removes the contents of the currently composing text and replaces it with the passed CharSequence, and then moves the cursor according to newCursorPosition.
현재의 텍스트를 지우고 받아진 CharSequence로 대체한다는 것인데, 제 생각에는 한글의 경우 'ㅇ'가 입력 되어있고 'ㅏ' 가 입력된 순간 'ㅇ' 을 지우고 '아'로 대체하는 것 같습니다.

http://developer.android.com/reference/android/view/inputmethod/InputConnection.html

mCommittedTextBeforeComposingText.append(text);
에는 'ㅇ' 을 저장, '아' 를 모두 저장하기 때문에... 예를 드신거로 말하자면 'ㅌ' + '테' + ... 로 계속돼 저장된 것 같습니다.....제가 말한게 아니라면, 혹시 해결했다면 저도 좀 알려주세요... commitText/setComposingText 로 애를 먹고 있네요

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...