Установка текста TextView в статический текст падает (редко) с ArrayIndexOutOfBoundsException - PullRequest
6 голосов
/ 18 мая 2019

Просто устанавливая текст TextViews в строку, определенную в коде (которая никогда не может быть null), я иногда получаю ArrayIndexOutOfBoundsException, это происходит только в моем живом приложении, у меня никогда не было этой проблемы ни в одном тесте устройства пока нет ... И кажется, что это происходит только иногда, пользователь говорит мне, что это происходит один раз, и в следующий раз все снова работает. Есть идеи, что может быть причиной здесь? Для меня это похоже, что этот сбой никогда не случится ...

Код

Я делаю следующее:

fun updateFilterInfo(showing: Int, total: Int) {
    binding?.tvFilterLvl1?.text = "$showing / $total" // <= THIS line creates the crash
}

Крах

И время от времени (очень редко) я получаю следующее падение:

java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at android.text.SpannableStringBuilder.getSpansRec(SpannableStringBuilder.java:973)
at android.text.SpannableStringBuilder.getSpans(SpannableStringBuilder.java:866)
at android.text.SpannableStringBuilder.getSpans(SpannableStringBuilder.java:836)
at android.text.SpannableStringBuilder.sendSpanAdded(SpannableStringBuilder.java:1268)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:773)
at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:672)
at android.widget.TextView.setText(TextView.java:5981)
at android.widget.TextView.setText(TextView.java:5849)
at android.widget.TextView.setText(TextView.java:5806)
... above line of my code ...

Версии / Фоновая

Я использую android x, новейшие стабильные версии, и у меня есть эта проблема ... Также я использую kotlin 1.3.21 и плагин Gradle 3.3.2 - все это стабильные и в основном самые новые версии. Кроме того, я убедился, что пользователь не использует пользовательское ПЗУ, поэтому и этого быть не может.

XML / Тема

Уязвимое представление очень простое, например:

<TextView
    android:id="@+id/tvFilterLvl1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:padding="4dp" />

Никаких пользовательских стилей здесь, никаких пользовательских шрифтов внутри моего проекта (хотя общесистемный пользовательский шрифт никогда не может быть исключен). Моя базовая тема приложения не определяет пользовательский стиль TextView и расширяет Theme.MaterialComponents.Light.DarkActionBar.Bridge. Так что ни XML, ни тема не имеют специальной обработки TextView ...

1 Ответ

0 голосов
/ 19 июня 2019

попробуй

fun updateFilterInfo(showing: Int, total: Int) {
  binding?.tvFilterLvl1?.let {
    text = "$showing / $total"
  }
}
...