我遇到了这个异常,我是 android 的新手,所以请帮助我。
E/UncaughtException: java.lang.IndexOutOfBoundsException: setSpan (2 ... 2) ends beyond length 1
holder.oldLaundriesQuantityEditText.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(s.toString().length()>0){
int editedQuantity = Integer.parseInt(s.toString());
if(editedQuantity==0){
finalHolder.oldLaundriesQuantityEditText.setText("1");
}
if(editedQuantity>oldLaundriesModelArrayList.get(position).getRemain_quantity()){
finalHolder.oldLaundriesQuantityEditText.setText(String.valueOf(
oldLaundriesModelArrayList.get(position).getRemain_quantity()
));
}
finalHolder.oldLaundriesQuantityEditText.setSelection(count);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
最佳答案
当您已经输入了长度为 2 的文本(例如 "10"
)但剩余数量返回一位数字(例如 "9"
)时,就会发生此问题,因为如果计数值为 2。在设置选择中,您使用的是计数值,并且只有一个长度为 1 但设置为 2 的字符串。
代替
finalHolder.oldLaundriesQuantityEditText.setSelection(count);
使用
finalHolder.oldLaundriesQuantityEditText.setSelection(finalHolder.oldLaundriesQuantityEditText.getText().toString().trim().length());
为了更好更干净,存储值
String.valueOf(oldLaundriesModelArrayList.get(position).getRemain_quantity());
在设置为edittext之前设置为一个字符串,然后使用相同的字符串对象来获取字符串的长度。
关于android - java.lang.IndexOutOfBoundsException : setSpan (2 . .. 2) 超出长度 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45160622/