【发布时间】:2018-11-21 02:24:18
【问题描述】:
我在尝试向 AndroidX 片段提供注入时遇到了一些问题,我不确定确切的问题是什么,以及如何解决它。应用程序拒绝构建,出现以下错误:
error: [Dagger/MissingBinding] java.util.Map<java.lang.Class<? extends androidx.fragment.app.Fragment>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends androidx.fragment.app.Fragment>>> cannot be provided without an @Provides-annotated method.
这是在片段中提供注入的方法:
private fun performDependencyInjection() = AndroidSupportInjection.inject(this)
fragment的父Activity实现了HasSupportFragmentInjector:
class MainActivity : BaseActivity(), MainMVPView, HasSupportFragmentInjector {
@Inject
internal lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Fragment>
...
override fun supportFragmentInjector() = dispatchingAndroidInjector
}
我完全不知道从哪里解决这个错误。目前似乎没有太多关于在 AndroidX 中使用 Dagger2 的文档。
我确实觉得重要的是要注意我通过以下方式启用了 AndroidX 和 Jetifier gradle.properties:
android.useAndroidX=true
android.enableJetifier=true
但是,在清理和重建项目后,一切都没有改变。
使用 Dagger2 向 AndroidX 片段提供注入的正确方法是什么?
编辑:记录在案,这是在 Dagger 2 版本 2.19 上。如果我切换到使用 2.16,一切正常。
【问题讨论】:
标签: android android-fragments dagger-2 androidx