当我使用 ViewModel.Factory 时,出现"Kodein 找不到 bind() 的绑定<Kodein>"错误



我引用 http://kodein.org/Kodein-DI/?6.1/android#view-model-factory 使用kodein视图模型,出现了错误。

零件代码

bind<ViewModelProvider.Factory>() with singleton { KodeinViewModelFactory(instance()) }
class KodeinViewModelFactory(private val kodein: Kodein) : ViewModelProvider.Factory {
  override fun <T : ViewModel> create(modelClass: Class<T>): T =
      kodein.direct.Instance(TT(modelClass))
}

这很简单,你只需要直接将 Kodein 转移到工厂,无需 instance((

class KodeinApp : Application(), KodeinAware {
    override val kodein by Kodein.lazy {
    import(androidXModule(this@KodeinApp))
    bind() from singleton { KodeinViewModelFactory(kodein) }
    bind() from singleton { MyViewModel(kodein) }
    }
} 

最新更新