#android #navigation #android-jetpack-compose #arrayindexoutofboundsexception
Вопрос:
Мое приложение представляет собой одно приложение для выполнения действий с различными экранами, представленными составными элементами. Я использую навигационный компонент для управления навигацией по экрану.
Мой навигационный компонент анимировал Navhost как:
AnimatedNavHost(
navController = navController,
startDestination = Constants.SPLASH,
enterTransition = { initial, _ ->
slideInHorizontally(initialOffsetX = { 1000 })
},
exitTransition = { _, target ->
slideOutHorizontally(targetOffsetX = { -1000 })
},
popEnterTransition = { initial, _ ->
slideInHorizontally(initialOffsetX = { -1000 })
},
popExitTransition = { _, target ->
slideOutHorizontally(targetOffsetX = { 1000 })
}
) {
composable(Constants.SPLASH) {
Splash(navController = navController)
}
composable(Constants.HIW) {
LogoPage(
false,
true,
navController = navController
) { HowItWorks(navController = navController, false) }
.
.
.
//Other 26 'composable' elements
}
Когда я добавляю еще 1 «составной» элемент, мое приложение аварийно завершает работу, и logcat говорит:
java.lang.ArrayIndexOutOfBoundsException: length=29; index=29
at androidx.collection.SparseArrayCompat.valueAt(SparseArrayCompat.java:379)
at androidx.navigation.NavController.setGraph(NavController.kt:948)
at androidx.navigation.NavController.setGraph(NavController.kt:95)
at com.google.accompanist.navigation.animation.AnimatedNavHostKt.AnimatedNavHost(AnimatedNavHost.kt:146)
at com.google.accompanist.navigation.animation.AnimatedNavHostKt.AnimatedNavHost(AnimatedNavHost.kt:85)
Как мне решить эту проблему?
Я много чего пытался, но так и не смог решить. Кроме того, похоже, что об этом нет никакой информации в Интернете.
Пожалуйста, помогите!
Ответ №1:
Об этом сообщается в этом выпуске.
Примечание: «Больше не будет
ArrayIndexOutOfBoundsException
при вызовеsetGraph
с графиком с 13 или 29 пунктами назначения».
Это должно быть исправлено с помощью навигации 2.4.0-alpha08
Комментарии:
1. Теперь я получаю java.util. Список ArrayList не может быть приведен к java.util.Set
2. @SparshDutta Я думаю, что это совершенно другая проблема.
3. Этого не происходит при использовании «NavHost» вместо AnimatedNavHost
4. @SparshDutta Хорошо, но ваш вопрос и мой ответ примерно
ArrayIndexOutOfBoundsException: length=29; index=29
. Это еще один вопрос.