2011-12-22 115 views
7

我在android中工作。我有個問題。當我第二次點擊我的文本框時,我的應用程序崩潰。Android:當我點擊我的editText時發生錯誤

這是我的logcat消息:

java.lang.IndexOutOfBoundsException: setSpan (4 ... 4) ends beyond length 0 
android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:943) 
android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:522) 
android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:514) 
android.text.Selection.setSelection(Selection.java:74) 
android.text.Selection.setSelection(Selection.java:85) 
android.text.method.ArrowKeyMovementMethod.onTouchEvent(ArrowKeyMovementMethod.java:410) 
android.widget.TextView.onTouchEvent(TextView.java:6715) 
android.widget.EditText.onTouchEvent(EditText.java:190) 
android.view.View.dispatchTouchEvent(View.java:3766) 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1731) 
com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1120) 
android.app.Activity.dispatchTouchEvent(Activity.java:2086) 
com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1715) 
android.view.ViewRoot.handleMessage(ViewRoot.java:1787) 
android.os.Handler.dispatchMessage(Handler.java:99) 

請幫我找出這個問題的原因。 預先感謝您。

+0

過去你的代碼.. – 2011-12-22 09:47:04

+0

我有同樣的問題,同時掃描條形碼時,焦點在Edittext上。 – 2013-02-18 06:12:23

+0

沒有看到任何代碼,我們不能發現解決方案。它的大小問題就像logcat在第一行所說的那樣。我不明白你是如何在問題和1星5點,因爲這個問題不是很好,其不明確 – xanexpt 2015-06-19 14:07:00

回答

2

你的問題的原因是以下錯誤: java.lang.IndexOutOfBoundsException: setSpan (4 ... 4) ends beyond length 0

顯然你的東西設置的跨度,但文本框爲空,給人一種IndexOutOfBoundsException,檢查輸入字符串的長度,你之前做打電話給setSpan。

編輯:

僅有很短的澄清,一個IndexOutOfBoundsException總是意味着你想一個數組,它是超出了數組的實際長度來訪問的一部分。字符串對象被定義爲字符數組。因此,當你試圖做一些事情,但是字符串的長度等於零時,你實際上會超出數組的邊界。

+0

當用戶從EditText的建議中選擇文本時也會發生這種情況。最大長度屬性已啓用。 – Raj 2014-12-16 09:52:31

2

你還沒有解釋你的代碼。所以很難解決你的問題。

檢查this博客。它可能會幫助你。這個博客提到了一個時間選擇問題。同樣的情況也適用於EditText & TextView。

setSaveFromParentEnabled(假) & setSaveEnabled(真)應該解決的問題。

tp = (TimePicker) findViewById(R.id.timePickerComponent); 
//two lines to add after 
tp.setSaveFromParentEnabled(false); 
tp.setSaveEnabled(true); 
0

,你可以開始你的文本框(編輯文字或等)

editText.setSaveFromParentEnabled(false); 
editText.setSaveEnabled(true); 

後有關此更多文檔添加下面的代碼,你可以閱讀下面的文檔:

1

setSpan(4 ... 4)超出長度0,這意味着您有一個4個空格字符串,其實際/修剪長度爲零,將選擇設置爲此會導致IndexOutOfBoundsException,您應該在設置之前檢查修剪的長度選擇