Неустрашимое исключение: java.lang.IllegalArgumentException Невозможно привести значение к пустому диапазону: максимум 0Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Неустрашимое исключение: java.lang.IllegalArgumentException Невозможно привести значение к пустому диапазону: максимум 0

Сообщение Anonymous »

Я использую HorizontalPager от Jetpack Compose с динамическим списком элементов в своем приложении. Время от времени моя служба отчетов о сбоях регистрирует следующий сбой, но мне никогда не удавалось воспроизвести его локально:

Код: Выделить всё

kotlin.ranges.RangesKt___RangesKt.coerceIn (_Ranges.kt:1428)
PagerState.performScroll (PagerState.java:240)
Вот соответствующий код:

Код: Выделить всё

val scrollModifier = Modifier.verticalScroll(scrollState)

val pagerState = rememberPagerState(
initialPage = startPage.coerceIn(0, (itemList.size - 1).coerceAtLeast(0))
) { itemList.size }

if (itemList.isNotEmpty()) {
HorizontalPager(
state = pagerState,
pageSpacing = 16.dp,
contentPadding = PaddingValues(horizontal = 24.dp, vertical = 32.dp),
snapPosition = SnapPosition.Center,
userScrollEnabled = true,
verticalAlignment = Alignment.Top,
modifier = Modifier
.background(color = MaterialTheme.colors.background)
.semantics {
role = Role.Carousel
testTagsAsResourceId = true
}
.then(scrollModifier)
) { pageIndex ->
itemList.getOrNull(pageIndex)?.let {
ItemDetailComponent(
modifier = Modifier
)
}
}
}

Реализация ItemDetailComponent:

Код: Выделить всё

Card(
shape = CustomShape(circleRadius = 12.dp, cornerSize = CornerSize(10.dp)),
elevation = 2.dp,
modifier = modifier.fillMaxWidth()
) { ... }

Ссылка на систему отслеживания ошибок: https://issuetracker.google.com/issues/437178800
Эта часть трассировки стека сбоев отличается в зависимости от данных:

Код: Выделить всё

maximum 0 is less than minimum 7
В нем упоминаются разные минимальные числа: 7, 9 и 8.
Мои вопросы:
  • Каковы распространенные причины сбоя coerceIn внутри PagerState.performScroll при использовании HorizontalPager?
  • Существуют ли лучшие практики для этого использование PagerState с динамическим содержимым, которое могло бы объяснить, почему этот сбой происходит только в рабочей среде, но не во время моего локального тестирования?
Большое спасибо за любые советы и объяснения!

Подробнее здесь: https://stackoverflow.com/questions/797 ... e-to-an-em
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»