我有一个ViewModel
,其依赖项应从Fragment
的{{1}}中获取。
所以它就像:
arguments
现在该片段在其争论中可以收到class SomeViewModel(someValue: SomeValue)
了,
SomeValue
问题是我不知道如何将class SomeFragment : Fragment() {
val someViewModel: SomeViewModel by viewModel()
companion object {
fun newInstance(someValue: SomeValue) = SomeFragment().apply {
arguments = bundleof("someKey" to someValue)
}
}
}
的{{1}}提取的SomeValue
添加到Fragment
的模块中。
是否有一种方法可以使片段对Koin依赖图有所贡献?
答案 0 :(得分:2)
所以对于其他任何问相同问题的人,答案如下:
https://insert-koin.io/docs/2.0/documentation/koin-core/injection-parameters.html
基本上,
您可以这样创建模块:
val myModule = module {
viewModel { (someValue : SomeValue) -> SomeViewModel(someValue ) }
}
现在在您的片段中,您可以执行以下操作:
class SomeFragment : Fragment() {
val someViewModel: SomeViewModel by viewModel {
parametersOf(argument!!.getParcelable<SomeValue>("someKey"))
}
companion object {
fun newInstance(someValue: SomeValue) = SomeFragment().apply {
arguments = bundleof("someKey" to someValue)
}
}
}