[java] Android-SPAN_EXCLUSIVE_EXCLUSIVE 스팬은 길이가 0 일 수 없습니다

다음과 같은 레이아웃이 있습니다 (거의 비어 있음).

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/set_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:contentDescription="content desc"
    android:orientation="vertical" >

    <TextView android:id="@+id/text"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Hello, I am a TextView" />
</LinearLayout>

Activity 클래스에는 다음이 포함됩니다.

public class TestActivity extends Activity {
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
  }
}

모바일 장치에서 이것을 실행하면 다음 오류가 발생합니다.

SpannableStringBuilder
SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

나는 TextView를 사용하거나 사용하지 않고 이것을 시도했지만 오류가 여전히 남아 있습니다.이를 발생시키기 위해 기본 레이아웃에 근본적으로 잘못된 일을하고 있어야합니다.

누구든지 오류없이로드 할 수있는 방법에 대한 아이디어가 있습니까?



답변

LogCat에서 동일한 오류 항목이 발생했습니다. 제 경우에는 사용중인 타사 키보드로 인해 발생합니다. Android 키보드로 다시 변경하면 오류 항목이 더 이상 표시되지 않습니다.


답변

당신이지고있어 오류가 있기 때문에 하지 관련 EditText, 다음은 것 없는 키보드 관련.

발생하는 오류는 코드의 결과가 아닙니다. 아마도 삼성의 TouchWiz가있는 삼성 장치에서 테스트하고있을 것입니다.

나는 같은 오류가 있었고 Nexus S (Samsung과 TouchWiz가없는 순수한 Android OS)에서 테스트했지만이 오류가 발생하지 않았습니다.

따라서 귀하의 경우 장치에서 테스트하는 동안 이러한 오류를 무시하십시오! 🙂


답변

코드를 보면 왜 오류가 발생하는지 잘 모르겠지만 EditText 필드와 동일한 오류가 발생했습니다.

변경 android:inputType="text"(또는 다른 inputType 텍스트 변화의) android:inputType="textNoSuggestions"(또는android:inputType="textEmailAddress|textNoSuggestions" 예를 들어) 나를 위해 그것을 해결했습니다.

코드에서 이것을 다음과 같이 설정할 수도 있습니다

mInputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

안드로이드는 기본적으로 EditText 필드에 제안 사항이 있다고 가정합니다. 그렇지 않으면 오류가 발생합니다. 이 설명에 100 % 확신하지는 않지만 위에서 언급 한 변경 사항으로 인해 문제가 해결되었습니다.

http://developer.android.com/reference/android/text/Spanned.html#SPAN_EXCLUSIVE_EXCLUSIVE

도움이 되었기를 바랍니다!


답변

안드로이드 폰에서
설정-> 응용 프로그램 관리자-> 모두-> 삼성 키보드로 이동 한 다음 “캐시 지우기”를 클릭하십시오
(이 응용 프로그램에서 수집 한 모든 데이터 삭제).


답변

기본 안드로이드 키보드를 사용해보십시오. 사라질 것입니다


답변

onCreateOptionsMenu 및 onCreate 메소드에 대한 MainAcitivity 값을 전달했는지 확인하십시오.

경우에 따라 개발자는 “return super.onCreateOptionsMenu (menu)”문을 삭제하고 “return true”로 변경했습니다.


답변

이것은 모든 장치에서 나를 위해 일했습니다.

    <EditText
        android:maxLines="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="15sp"
        android:layout_centerVertical="true"
        android:textColor="#000"
        android:id="@+id/input_search"
        android:background="@null"
        android:inputType="text"
        android:hint="Enter Address, City or Zip Code"
        android:imeOptions="actionSearch"
        />

자바 코드에서 :

mSearchText.setOnEditorActionListener(new TextView.OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
            if(actionId == EditorInfo.IME_ACTION_SEARCH
                    || actionId == EditorInfo.IME_ACTION_DONE
                    || keyEvent.getAction() == KeyEvent.ACTION_DOWN
                    || keyEvent.getAction() == KeyEvent.KEYCODE_ENTER){

                //execute our method for searching
            }

            return false;
        }
    });