类型安全导航、Kotlinx 序列化和内部类

问题描述 投票:0回答:1

我正在使用类型安全导航构建一个应用程序。

目的地

    @Serializable
    data object OwnerGraph {
    
        @Serializable
        data object HistoryGraph {
    
            @Serializable
            data object HistoryScreen
        }
}

导航图:

fun NavGraphBuilder.historyScreenOwnerNavGraph() {
    navigation<OwnerGraph.HistoryGraph>(
        startDestination = OwnerGraph.HistoryGraph.HistoryScreen
    ) {
        composable<OwnerGraph.HistoryGraph.HistoryScreen> { navBackStackEntry ->
            val navHostController = LocalNavHostContoller.current
            Text("History Screen")
        }
    }
}

导航主机

NavHost(
    navController = navController,
    startDestination = startingNavigationGraph,
    modifier = Modifier
        .padding(paddingValues)
        .consumeWindowInsets(paddingValues)
) {
    historyScreenOwnerNavGraph()

}

当我运行该应用程序时,我收到此错误:

kotlinx.serialization.SerializationException: Serializer for class 'OwnerGraph$HistoryGraph' is not found.
                                                                                                    Please ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied.

但是我应用了插件并添加了相应的库。

奇怪的是,这只是我整个代码库的一部分。

我也在其他地方使用这种结构,并且没有出现这样的崩溃。

但是突然之间这个特别的问题出现了。

我想想象一下我的类型安全图的这种结构,这使它更容易理解。

android kotlin android-jetpack-compose
1个回答
0
投票

确保您从 @kotlinx.serialization.Serialized 导入并在 build.gradle 中正确设置插件,

模块: id("org.jetbrains.kotlin.plugin.serialization") 版本“1.7.10”适用 false

应用程序: id(“org.jetbrains.kotlin.plugin.序列化”),

然后尝试将起始目的地设置为,startDestination = OwnerGraph.HistoryGraph

© www.soinside.com 2019 - 2024. All rights reserved.