Jetpack 使用 hiltViewModel 撰写导航无法找到构造函数

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

我的应用程序中有一个 NavHost 定义如下:

@Composable
fun MainScreen() {
    val navController = rememberNavController()
    Scaffold(
        modifier = Modifier.fillMaxSize(),
        bottomBar = {
            BottomBar(navController = navController)
        }
    ) {
        NavHost(
            modifier = Modifier.padding(it),
            navController = navController,
            startDestination = "main",
        ) {
            navigation("B", route = "main") {
                composable("A") {
                    ScreenA(navigate = { navController.navigate(route = "new") })
                }
                composable("B") { ScreenB() }
            }
            navigation("C", route = "new") {
                composable("C") {
                    ScreenC(onBack = {
                        navController.popBackStack()
                    })
                }
            }
        }
    }
}

在 ScreenC 内部我有一个

val viewModel = hiltViewModel<ScreenCViewModel>()
(如 ScreenA 和 ScreenB 中一样)。
ScreenCViewModel
的 init 会导致异常,因为它表示没有找到该 viewModel 的构造函数。 所有 viewModel 都标有
@HiltViewModel
注释,所有依赖项均使用
@Provides
@Binds
排序。 我确信我缺少图表的一点配置。有什么想法吗?

navigation android-jetpack-compose dagger-hilt jetpack-compose-navigation
1个回答
0
投票

没有完整的图片,很难像@Leviathan 所说的那样猜测。无论如何,我能想到的只有两个

  1. 您忘记了模块内的依赖项

  2. 在 App /Fragment/Screen 中声明视图模型时,您忘记添加

    @AndroidEntryPoint
    和/或 viewModels()` 委托...

抱歉,我脑子里什么也没想到。

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