自定义EditText上的setSelection抛出IndexOutOfBoundsException

时间:2017-08-17 07:08:07

标签: android android-edittext indexoutofboundsexception

在我的自定义EditText中,如果之前没有可用的文本,我想将光标定位在插入文本的末尾,但由于某些原因,会抛出IndexOutOfBoundsException

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

该行

setSelection(text.length());

抛出异常。我想在这一点上,文本应该在edittext中可用,但有时它似乎不存在

异常

  

java.lang.IndexOutOfBoundsException:setSpan(2 ... 2)结束超过0       在android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1320)       在android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:683)       在android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:676)       在android.text.Selection.setSelection(Selection.java:76)       在android.text.Selection.setSelection(Selection.java:87)       在android.widget.EditText.setSelection(EditText.java:103)       at 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)       at java.lang.reflect.Method.invoke(Native Method)       在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:889)       在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)`

1 个答案:

答案 0 :(得分:0)

我认为它有效

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