gpt4 book ai didi

java.lang.IndexOutOfBoundsException : setSpan (118 . .. 119) 结束超过长度 118

转载 作者:太空狗 更新时间:2023-10-29 15:58:10 26 4
gpt4 key购买 nike

我搜索了不同的问题,但没有发现任何关于我的问题的具体信息。我正在通过选择颜色来更改文本颜色并且工作成功但是当我在输入颜色文本后开始删除我的编辑文本时我收到此错误。

myedittext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor(txtColor)), start, start+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

}
@Override
public void afterTextChanged(Editable s) {
}
});
}

出现以下错误

java.lang.IndexOutOfBoundsException: setSpan (118 ... 119) ends beyond length 118
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1309)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:680)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:672)
at com.apps.primalnotes.Fragments.EditorFragment$16.onTextChanged(EditorFragment.java:842)
at android.widget.TextView.sendOnTextChanged(TextView.java:10611)
at android.widget.TextView.handleTextChanged(TextView.java:10715)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:14057)

我现在是这样用两种颜色写的

enter image description here

现在当我保存它时。它只保存粉红色并像这样显示我 enter image description here enter image description here但现在当我再次保存它而不做任何更改时,它以我写的颜色保存 enter image description here

最佳答案

调用 onTextChanged 方法是为了告诉您在 CharSequence s 中,从 start 开始的字符数 count 刚刚替换了旧文本有长度 before

发生的事情是,当用户按下退格键时,开始是在您的字符序列的上限,即如果您之前有七个字符,则开始是 6,这与最后一个元素相同。您正在执行 start+1,这始终是一个超出索引范围的数字。

myedittext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(start < s.length() - 1 || count > before){
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor(txtColor)), start, start+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}

}
@Override
public void afterTextChanged(Editable s) {
}
});
}

没有尝试该代码,但它应该可以工作。这只是为了向您展示您做错了什么以及您应该做什么。

关于java.lang.IndexOutOfBoundsException : setSpan (118 . .. 119) 结束超过长度 118,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53584498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com