안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
soft Keyboard 사용중 문제가 발생하여 질문드립니다.
아래 체크된 형식을 넣으면 에러가 발생합니다.
Keyboard의 cursor 위치와 TextView의 cursor위치가 틀려서 발생하는 것 같습니다.
고수님들의 많은 조언 부탁드립니다.
/** layout :TextView **/
<TextView
android:id="@+id/textview"
android:layout_width="304px"
android:layout_height="40px"
android:layout_x="30px"
android:layout_y="65px"
android:maxLines="1"
android:scrollHorizontally="true"
android:textSize="34px"
android:freezesText="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:textColor="#ffffff"
android:gravity="right"
android:inputType="textEmailAddress"
android:imeOptions="actionSend|flagNoExtractUi">
</TextView>
/** soft keyboard 실행 **/
TextView textview = (TextView)findViewById(R.id.textview);
textview.setText(""); <<========== 이부분을 넣고 keyboard를 실행 후 글자를 입력하면 IndexOutBoundsException에러가 발생합니다.
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(textview, InputMethodManager.SHOW_FORCED);
/**Logcat 내용**/
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): java.lang.IndexOutOfBoundsException: replace (-1 ... -1) starts before 0
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:949)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:274)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:565)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:366)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:276)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:57)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.os.Handler.dispatchMessage(Handler.java:99)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.os.Looper.loop(Looper.java:123)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.app.ActivityThread.main(ActivityThread.java:3948)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at java.lang.reflect.Method.invokeNative(Native Method)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at java.lang.reflect.Method.invoke(Method.java:521)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at dalvik.system.NativeStart.main(Native Method)
12-10 08:47:16.789: WARN/AudioFlinger(554): write blocked for 49 msecs
soft Keyboard 사용중 문제가 발생하여 질문드립니다.
아래 체크된 형식을 넣으면 에러가 발생합니다.
Keyboard의 cursor 위치와 TextView의 cursor위치가 틀려서 발생하는 것 같습니다.
고수님들의 많은 조언 부탁드립니다.
/** layout :TextView **/
<TextView
android:id="@+id/textview"
android:layout_width="304px"
android:layout_height="40px"
android:layout_x="30px"
android:layout_y="65px"
android:maxLines="1"
android:scrollHorizontally="true"
android:textSize="34px"
android:freezesText="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:textColor="#ffffff"
android:gravity="right"
android:inputType="textEmailAddress"
android:imeOptions="actionSend|flagNoExtractUi">
</TextView>
/** soft keyboard 실행 **/
TextView textview = (TextView)findViewById(R.id.textview);
textview.setText(""); <<========== 이부분을 넣고 keyboard를 실행 후 글자를 입력하면 IndexOutBoundsException에러가 발생합니다.
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(textview, InputMethodManager.SHOW_FORCED);
/**Logcat 내용**/
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): java.lang.IndexOutOfBoundsException: replace (-1 ... -1) starts before 0
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:949)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:274)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:565)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:366)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:276)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:57)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.os.Handler.dispatchMessage(Handler.java:99)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.os.Looper.loop(Looper.java:123)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at android.app.ActivityThread.main(ActivityThread.java:3948)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at java.lang.reflect.Method.invokeNative(Native Method)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at java.lang.reflect.Method.invoke(Method.java:521)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
12-10 08:47:16.709: ERROR/AndroidRuntime(2514): at dalvik.system.NativeStart.main(Native Method)
12-10 08:47:16.789: WARN/AudioFlinger(554): write blocked for 49 msecs
혹시 이거 true 로 해서 그런가 아닐까요?