atal 异常:java.lang.IndexOutOfBoundsException setSpan (4 ... 4) 结束超过长度 3 只发生在 Nexus 5X 设备上

问题描述

我在我的 crashlytics 中看到这个崩溃有一段时间了,但我找不到修复它的方法。它仅发生在运行 Android 6.0.1 的 Nexus 5X 设备上。

崩溃日志:

Fatal Exception: java.lang.indexoutofboundsexception: setSpan (4 ... 4) ends beyond length 3
       at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1090)
       at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:665)
       at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:658)
       at android.text.Selection.setSelection(Selection.java:76)
       at android.text.Selection.setSelection(Selection.java:87)
       at android.widget.EditText.setSelection(EditText.java:98)
       at android.widget.EditText.performAccessibilityActionInternal(EditText.java:138)
       at android.view.View.performAccessibilityAction(View.java:8889)
       at android.view.AccessibilityInteractionController.performAccessibilityActionUiThread(AccessibilityInteractionController.java:668)
       at android.view.AccessibilityInteractionController.-wrap6(AccessibilityInteractionController.java)
       at android.view.AccessibilityInteractionController$PrivateHandler.handleMessage(AccessibilityInteractionController.java:1194)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:148)
       at android.app.ActivityThread.main(ActivityThread.java:5421)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我无法重现崩溃。既不使用物理设备也不使用模拟器。它似乎与 TextChanged 侦听器有关。执行此操作时会崩溃。

代码示例:

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

            @Override
            public void onTextChanged(CharSequence s,int before,int count) {

            }

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


public void calculateraidLevel(){

    double CROP_VALUE_CottON = 1.5;

    double cropValue;

    int cottonValue = 0;
    if(!editTextCotton.getText().toString().isEmpty())           cottonValue = Integer.valueOf(editTextCotton.getText().toString());

    cropValue =  cottonValue * CROP_VALUE_CottON;

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...