【问题标题】:Subcomponent (unscoped) may not reference scoped bindings: @Singleton @Provides @org.jetbrains.annotations.NotNull子组件(无作用域)可能不引用作用域绑定:@Singleton @Provides @org.jetbrains.annotations.NotNull
【发布时间】:2018-05-21 11:48:06
【问题描述】:

我正在使用匕首 2.11

模块

@Module
class MyModule {
    @Provides
    fun provideString() : String = "yo"
    @Provides @Named("injector")
    fun provideInzectorString() : String = "named_injection"

    @Singleton @Provides //The error goes away if I remove @Singleton
    fun provideRepository() = Repository(Interceptor(),"")
}

活动绑定模块

@Module
abstract class ActivityBindingModule {
    @ContributesAndroidInjector(modules = [MyModule::class])
     abstract fun suggestionActivity() : SuggestionsActivity

    @ContributesAndroidInjector(modules = [MyModule::class])
    abstract fun editSubscriptionActivity() : SubscribeActivity
}

应用组件

@Singleton
@Component(modules = {
        AndroidInjectionModule.class,
        MyModule.class
})
interface AppComponent {
    @Component.Builder
    interface Builder {
        @BindsInstance
        Builder application(MyApplication application);

        AppComponent build();
    }

    void inject(MyApplication app);
}

编译时出现此错误

SubscribeActivitySubcomponent (unscoped) may not reference scoped bindings:
      @Singleton @Provides @org.jetbrains.annotations.NotNull

我见过12 这些解决方案。两者都要求您使用我已经在做的@Singleton 注释您的应用程序组件。我的代码有什么问题?

【问题讨论】:

    标签: android singleton dagger-2 dagger


    【解决方案1】:

    问题是MyModule 的范围(应用程序或单例)大于活动范围。

     @ContributesAndroidInjector(modules = [MyModule::class])
     abstract fun suggestionActivity() : SuggestionsActivity
    

    删除两个(modules = [MyModule::class])s 或定义活动特定模块。

    这里不需要MyModule。它是多余的,因为它已经包含在 AppComponent 中。

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多