在我的自定义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)`
答案 0 :(得分:0)
我认为它有效
text = text.substring(0, start);
mEditPass.setText(text);
mEditPass.setSelection(start);