Mic*_*oka 1 android android-support-library dagger androidx
我正在尝试在新应用程序中实现 Dagger2 注入,唯一失败的是 DaggerAppCompatActivity 和 SupportFragmentInjector。
当我转到 DaggerAppCompatActivity 代码时,我看到:
它尝试在 androidx 重构之前从库版本中引用 AppCompatActivity 和 Fragment。当我继承这个类时,我什至不能调用 setContentView(),因为它不可用。
我想将此代码复制粘贴到我自己的基本活动中,但 HasSupportFragmentInjector 使用 pre-adroidX Fragment。
有没有办法让它与 AndroidX 一起工作?
编辑:这是我在尝试使用 DaggerAppCompatActivity 作为@ContributesAndroidInjector 提到的活动的基类时得到的错误。如果我只是简单地做 AndroidInjection.inject(this) 而不是这个继承,它工作得很好。
C:\Users\micha\Workspace\StudioProjects\BirthdayGift\app\build\tmp\kapt3\stubs\debug\com\mpowloka\birthdaygift\common\di\ApplicationComponent.java:8: error: [Dagger/MissingBinding] [dagger.android.AndroidInjector.inject(T)] 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.
public abstract interface ApplicationComponent {
^
java.util.Map<java.lang.Class<? extends androidx.fragment.app.Fragment>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends androidx.fragment.app.Fragment>>> is injected at
dagger.android.DispatchingAndroidInjector.<init>(injectorFactories)
dagger.android.DispatchingAndroidInjector<androidx.fragment.app.Fragment> is injected at
dagger.android.support.DaggerAppCompatActivity.supportFragmentInjector
com.mpowloka.birthdaygift.persons.PersonsActivity is injected at
dagger.android.AndroidInjector.inject(T)
component path: com.mpowloka.birthdaygift.common.di.ApplicationComponent ? com.mpowloka.birthdaygift.common.di.ActivityBindingModule_PersonsActivity.PersonsActivitySubcomponent
Run Code Online (Sandbox Code Playgroud)
编辑 2:我的项目依赖项(包含在单独的 gradle 文件中):
ext.room = dependencyGroup {
kapt "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-runtime:$room_version"
testImplementation "androidx.room:room-testing:$room_version"
}
ext.dagger = dependencyGroup {
implementation "com.google.dagger:dagger:$dagger_version"
implementation "com.google.dagger:dagger-android:$dagger_version"
implementation "com.google.dagger:dagger-android-support:$dagger_version"
kapt "com.google.dagger:dagger-compiler:$dagger_version"
kapt "com.google.dagger:dagger-android-processor:$dagger_version"
}
ext.coreTesting = dependencyGroup {
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.21.0'
testImplementation 'org.awaitility:awaitility:3.1.2'
androidTestImplementation 'org.mockito:mockito-core:2.21.0'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'org.awaitility:awaitility:3.1.2'
}
ext.androidArchitecture = dependencyGroup {
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
testImplementation "androidx.arch.core:core-testing:$lifecycle_version"
}
ext.views = dependencyGroup {
implementation 'com.android.support:design:28.0.0'
}
ext {
kotlin_version = '1.2.71'
room_version = '2.0.0-beta01'
dagger_version = "2.16"
lifecycle_version = '2.0.0-beta01'
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我解决了这个问题。
这是我的依赖:
实现“com.google.dagger:dagger:2.16”
实现“com.google.dagger:dagger-android-support:2.16”
kapt "com.google.dagger:dagger-compiler:2.16"
kapt "com.google.dagger:dagger-android-processor:2.16"
归档时间: |
|
查看次数: |
2559 次 |
最近记录: |