2011-12-22 20 views
7

私はアンドロイドで働いています。私は問題があります。 2回目にテキストボックスをクリックすると、アプリケーションがクラッシュします。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

あなたのコードより.. –

+0

フォーカスがEdittextにあるときにバーコードをスキャンしている間、同じ問題があります。 –

+0

コードを見ずに解決策を見つけることはできません。あなたのlogcatが最初の行で言うようにサイズの問題。この質問はうまくできておらず、非常に不明であるため、あなたは質問と1つの星で5点をどのように持っているのかわかりません – xanexpt

答えて

2

あなたの問題の原因は次のエラーです: java.lang.IndexOutOfBoundsException: setSpan (4 ... 4) ends beyond length 0

どうやらあなたが作る前に、入力文字列の長さをチェックし、あなたが何かにスパンを設定しているが、テキストフィールドが空である、IndexOutOfBoundsExceptionを与えますsetSpanの呼び出しです。

EDIT:

だけ短く明確化、IndexOutOfBoundsExceptionは常にあなたが配列の実際の長さを超えているアレイの一部にアクセスしようとしていることを意味します。 Stringオブジェクトは文字の配列として定義されます。文字列の長さがゼロに等しい場合、実際には配列の境界を越えてしまいます。

+0

これは、ユーザーがEditTextの提案からテキストを選択したときにも起こります。最大長プロパティが有効です。 – Raj

2

あなたのコードについては説明していません。だからあなたの問題を乗り越えるのは難しいです。

チェックthisブログ。それはあなたを助けるかもしれません。このブログでは、時間ピッカーの問題について述べています。 EditText & TextViewでも同じことが言えます。

setSaveFromParentEnabled (偽) & setSaveEnabled (真)問題を解決する必要があります。

あなたが開始した後のコードの下にテキストボックス(エディットテキストやなど)

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

を追加することができ、これについての詳細ドキュメントのためにあなたがドキュメントの下に読むことができ

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

setSpan(4 ... 4)は長さ0を超えて終了します。つまり、空白文字列が4つあることを意味します。実際の/トリム長はゼロです。これを選択するとIndexOutOfBoundsExceptionが発生します。選択

関連する問題