Ram*_*sad 2 android kotlin dagger dagger-2
我正在尝试将 Dagger 2.15 与我的 Kotlin 项目集成。即使我绑定了 ViewModel,我也遇到了以下编译时异常,
error: [dagger.android.AndroidInjector.inject(T)] java.util.Map<java.lang.Class<? extends android.arch.lifecycle.ViewModel>,? extends javax.inject.Provider<android.arch.lifecycle.ViewModel>> cannot be provided without an @Provides-annotated method.
我已经看过你的代码,我相信问题出在这段代码的某个地方:
@Binds
@IntoMap
@ViewModelKey(MainViewModel::class)
abstract fun bindMainViewModel(userViewModel: MainViewModel): MainViewModel
Run Code Online (Sandbox Code Playgroud)
对于绑定 MainViewModel,首先您需要在 MainViewModel 中进行构造函数注入,如下所示:
class MainViewModel
@Inject constructor()
: AndroidViewModel(Application())
Run Code Online (Sandbox Code Playgroud)
此外,您在 MainViewModel 中绑定或使用 @Binds 的方式不正确,您无法返回作为参数传入的内容,dagger 将在构建时抛出循环依赖异常。有关绑定的更多信息,请参阅本文,并为避免此错误,请将绑定代码更改为:
@Binds
@IntoMap
@ViewModelKey(MainViewModel::class)
abstract fun bindMainViewModel(userViewModel: MainViewModel): ViewModel
Run Code Online (Sandbox Code Playgroud)
尝试这些更改,如果您遇到任何问题,请告诉我。谢谢
| 归档时间: |
|
| 查看次数: |
2939 次 |
| 最近记录: |