简体   繁体   English

当我使用ViewModel.Factory时,出现`Kodein No binding found for bind<Kodein> ()` 错误

[英]When I use ViewModel.Factory, appear `Kodein No binding found for bind<Kodein>()` error

I reference to http://kodein.org/Kodein-DI/?6.1/android#view-model-factory use the kodein viewmodel, appeared the error.我参考http://kodein.org/Kodein-DI/?6.1/android#view-model-factory使用kodein viewmodel,出现错误。

the part code零件代码

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

It's quite simple, you just need to directly transfer Kodein to the factory, without instance()很简单,直接把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) }
    }
} 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM