Как исправить ошибку java.lang.IllegalArgumentException: Polymorphic value has not been read for class null?
делал новую типобезопасную навигацию в jetpack compose. И возникла ошибка ошибка java.lang.IllegalArgumentException: Polymorphic value has not been read for class null
NavigationGraph.
@Composable
fun NavigationGraph(navigationController: NavHostController) =
NavHost(
navController = navigationController,
startDestination = Chats,
builder = {
composable<Profile> { ProfileScreen() }
composable<Chats> { ChatsScreen() }
composable<Search> { SearchScreen() }
}
)
NavigationScreens
@Serializable
sealed interface NavigationScreens {
@Serializable
data object Profile: NavigationScreens
@Serializable
data object Chats: NavigationScreens
@Serializable
data object Search: NavigationScreens
}
ItemNavigation
@Serializable
data class ItemNavigation(
val title: String,
val icon: Int
)
BottomNavigation
@Composable
fun BottomNavigationCompose(navigation: NavController) {
val itemMap = mapOf(
NavigationScreens.Search
to ItemNavigation(title = "Поиск", icon = R.drawable.search),
NavigationScreens.Chats
to ItemNavigation(title = "Чаты", icon = R.drawable.chat),
NavigationScreens.Profile
to ItemNavigation(title = "Профиль", icon = R.drawable.profile),
)
BottomAppBar(
content = {
val backstackEntry by navigation.currentBackStackEntryAsState()
val currentRoute = backstackEntry?.toRoute<NavigationScreens>()
itemMap.forEach { (item, data) ->
ItemBN(
title = data.title,
icon = data.icon,
selected = item == currentRoute,
onClick = { navigation.navigate(item) }
)
}
},
containerColor = dominantColor,
modifier = Modifier
.border(
width = 1.dp,
color = borderColor
)
)
}
Stacktrace
E FATAL EXCEPTION: main
Process: ru.ankwy.mobile, PID: 5625
java.lang.IllegalArgumentException: Polymorphic value has not been read for class null
at kotlinx.serialization.internal.AbstractPolymorphicSerializer.deserialize(AbstractPolymorphicSerializer.kt:67)
at kotlinx.serialization.encoding.Decoder$DefaultImpls.decodeSerializableValue(Decoding.kt:257)
at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:16)
at androidx.navigation.serialization.RouteDecoder.decodeRouteWithArgs$navigation_common_release(RouteDecoder.kt:96)
at androidx.navigation.serialization.RouteDeserializerKt.decodeArguments(RouteDeserializer.kt:28)
at ru.ankwy.mobile.ui.components.BottomNavigationComposeKt$BottomNavigationCompose$1.invoke(BottomNavigationCompose.kt:120)
at ru.ankwy.mobile.ui.components.BottomNavigationComposeKt$BottomNavigationCompose$1.invoke(BottomNavigationCompose.kt:55)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:118)
at androidx.compose.runtime.internal.ComposableLambdaImpl$invoke$1.invoke(ComposableLambda.jvm.kt:130)
at androidx.compose.runtime.internal.ComposableLambdaImpl$invoke$1.invoke(ComposableLambda.jvm.kt:129)
at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:192)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2825)
at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:3116)
at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3607)
at androidx.compose.runtime.ComposerImpl.recompose$runtime_release(Composer.kt:3552)
at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:948)
at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1206)
at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:132)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:616)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:585)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1404)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1415)
at android.view.Choreographer.doCallbacks(Choreographer.java:1015)
at android.view.Choreographer.doFrame(Choreographer.java:941)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1389)
at android.os.Handler.handleCallback(Handler.java:959)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8705)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@1676268, androidx.compose.ui.platform.MotionDurationScaleImpl@d70c681, StandaloneCoroutine{Cancelling}@e460326, AndroidUiDispatcher@e291b67]
Как исправить ошибку?