无法将子组件依赖项注入片段

时间:2019-12-24 17:25:18

标签: android dagger-2

我正在使用android依赖注入,并且可以工作,但是,如果子组件的模块提供了依赖,则好像无法注入片段:

通知应用程序组件具有@Singleton范围:

@Singleton
@Component(
    modules = [
        AndroidInjectionModule::class,
        ...
        ActivityBuilder::class,
        FragmentBuilder::class]
)
interface AppComponent { ...

通知活动具有不同的范围(@ActivityScope):

@Module
abstract class ActivityBuilder {

    @ContributesAndroidInjector(modules = [MyActivityModule::class])
    @ActivityScope
    abstract fun bindMyActivity(): MyActivity

片段使用与活动相同的作用域:

@Module
abstract class FragmentBuilder {

    @ContributesAndroidInjector
    @ActivityScope
    abstract fun bindMyFragment(): MyFragment

问题:假设MyActivityModule具有创建依赖项Abc的“ @Provides ... @ ActivityScope”方法,为什么不能将其注入MyFragment? ({Abc cannot be provided without an @Inject constructor or an @Provides-annotated method,提到了AppComponent)。

我不得不提到片段是通过AndroidSupportInjection.inject(this)注入的。如果问题是由于父组件看不到子组件的依赖性,那么在我的情况下注入片段的正确方法是什么?

0 个答案:

没有答案