Android 使用多个相同 class 参数的 Koin 注入视图模型失败
Android Koin injected viewmodel with multiple same class parameters fails
我正在按照她的说明关注文档 https://insert-koin.io/docs/reference/koin-android/viewmodel/#viewmodel-and-injection-parameters
唯一的区别是我的视图模型有 2 个(除了 Koin 注入的 repos 之外)相同 class 字符串的参数。让我们称它们为 stringA = "red" 和 stringB = "blue"。
当我传递参数时,这些参数的定义明显不同。但是当视图模型被实例化时,我记录了字符串并且它们都具有 stringA,“red”的值。
我可以将它们都包装到一个数据中 class,但理想情况下我希望它们分开,知道哪里出了问题或应该做什么吗?
Koin 模块
val viewModelsModule = module {
viewModel { params ->
MyViewModel(get(), stringA = params.get(), stringB = params.get(), get()) }
}
ViewModelInjection
val viewModel: MyViewModel = getViewModel(parameters = {parametersOf("red", "blue")})
MyViewModel 中的参数检查
init {
viewModelScope.launch {
Log.d("TAG", "$stringA $stringB")
}
}
并打印:
red red
params.get()
按类型解析参数。由于两者都是字符串,因此在两种情况下都会匹配第一个。它仅在类型不同(例如 int 和 String)时隐式工作。
解决方法是索引参数:
stringA = params[0], stringB = params[1]
更长的上下文片段:
viewModel { params ->
MyViewModel(get(), stringA = params[0], stringB = params[1], get()) }
我正在按照她的说明关注文档 https://insert-koin.io/docs/reference/koin-android/viewmodel/#viewmodel-and-injection-parameters
唯一的区别是我的视图模型有 2 个(除了 Koin 注入的 repos 之外)相同 class 字符串的参数。让我们称它们为 stringA = "red" 和 stringB = "blue"。
当我传递参数时,这些参数的定义明显不同。但是当视图模型被实例化时,我记录了字符串并且它们都具有 stringA,“red”的值。
我可以将它们都包装到一个数据中 class,但理想情况下我希望它们分开,知道哪里出了问题或应该做什么吗?
Koin 模块
val viewModelsModule = module {
viewModel { params ->
MyViewModel(get(), stringA = params.get(), stringB = params.get(), get()) }
}
ViewModelInjection
val viewModel: MyViewModel = getViewModel(parameters = {parametersOf("red", "blue")})
MyViewModel 中的参数检查
init {
viewModelScope.launch {
Log.d("TAG", "$stringA $stringB")
}
}
并打印:
red red
params.get()
按类型解析参数。由于两者都是字符串,因此在两种情况下都会匹配第一个。它仅在类型不同(例如 int 和 String)时隐式工作。
解决方法是索引参数:
stringA = params[0], stringB = params[1]
更长的上下文片段:
viewModel { params ->
MyViewModel(get(), stringA = params[0], stringB = params[1], get()) }