2017-08-17 2 views
-2

Dans mon EditText personnalisé, je veux positionner le curseur à la fin du texte inséré s'il n'y avait pas de texte disponible auparavant, mais pour certaines raisons un IndexOutOfBoundsException est levé.setSelection sur les éditions de texte personnalisées IndexOutOfBoundsException

@Override 
public void setText(CharSequence text, BufferType type) { 
    super.setText(text.toString().toUpperCase(), type); 
    if (getSelectionStart() == 0 && text.length() > 0) { 
     setSelection(text.length()); 
    } 
} 

La ligne

setSelection(text.length()); 

lève l'exception. Je pensais à ce stade, le texte devrait être disponible dans le edittext mais parfois il semble être pas là

Exception:

java.lang.IndexOutOfBoundsException: setSpan (2 ... 2) se termine au-delà de la longueur 0 à android.text.SpannableStringBuilder.checkRange (SpannableStringBuilder.java:1320) à android.text.SpannableStringBuilder.setSpan (SpannableStringBuilder.java:683) à android.text.SpannableStringBuilder.setSpan (SpannableStringBuilder.java : 676) at android.text.Selection.setSelection (Selection.java:76) à android.text.Selection.setSelection (Selection.java:87) à android.widget.EditText.setSelection (EditText.java:103) à com.thpeaklab.ibanedittext.IbanEditTextView $ 1.run (IbanEditTextView.java:87) à android.os.Handler.handleCallback (Handler.java:751) à android.os.Handler.dispatchMessage (Handler.java:95) à android.os.Looper.loop (Looper.java:154) à android.app.ActivityThread.main (ActivityThread.java:6121) à java.lang.reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java: 889) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:779) `

Répondre

0

Je pense que cela fonctionne

text = text.substring(0, start); 
mEditPass.setText(text); 
mEditPass.setSelection(start); 
+0

La sélection devrait se produire dans la méthode setText(). – grumpyshoe