如何将片段的自变量项添加到Koin依赖图?

时间:2019-06-04 02:39:34

标签: android kotlin dependency-injection koin

我有一个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依赖图有所贡献?

1 个答案:

答案 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)
        }
    }
}