android - android hilt注入ViewModel
问题描述
我正在尝试向 MyViewModel 注入一个模块
这是我的模块
@Module
@InstallIn(ViewModelComponent::class)
object EngineModule {
@Provides
fun getEngine(): String = "F35 Engine"
}
这是我的视图模型
@HiltViewModel
class MyViewModel @Inject constructor(): ViewModel() {
@Inject lateinit var getEngine: String
fun getEngineNameFromViewModel(): String = getEngineName()
}
它抛出
kotlin.UninitializedPropertyAccessException:lateinit 属性 getEngine 尚未初始化
但是,如果我像这样更改ViewModelComponent::class
并ActivityComponent::class
注入
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
@Inject
lateinit var getEngine: String
它完美无缺
知道如何注入视图模型吗?
解决方案
由于将在ViewModel
的构造函数中注入所需的依赖项,因此您只需按以下方式修改代码即可使其工作:
@HiltViewModel
class MyViewModel @Inject constructor(private val engineName: String): ViewModel() {
fun getEngineNameFromViewModel(): String = engineName
}
推荐阅读
- rust - Rust 会优化掉未使用的函数参数吗?
- python - 构建 kivy 应用程序时出错:ModuleNotFoundError: No module named 'typing_extensions'
- java - api应用程序升级版本问题如何解决
- angular - 应用程序根加载组件,但在单独的路由上,不加载某些组件
- github - 如何在 Windows 上将 clang++ 与 GitHub 操作一起使用
- swiftui - 迁移到新的 SwiftUI App 协议,我的 FCM 通知停止工作
- javascript - jquery 代码可在除 safari 之外的所有其他浏览器上运行
- nswag - 指定 NSwag 要构建的类型
- node.js - Dockerizing React App 但 ERR_EMPTY_RESPONSE
- javascript - 构建一个字符串并将其用作 html 对象:未捕获的错误:对象作为 React 子对象无效