Субкомпонент (с незаданной областью) может не ссылаться на привязки с областью видимости: @Singleton @Provides @ org.jetbrains.annotations.NotNull - PullRequest
0 голосов
/ 21 мая 2018

Я использую кинжал 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
}

AppComponent

@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

Я видел эти решения 1 и 2 .Оба просят вас аннотировать ваш компонент приложения с помощью @Singleton, что я уже делаю.Что не так с моим кодом?

1 Ответ

0 голосов
/ 21 мая 2018

Проблема в том, что область действия MyModule (приложение или синглтон) больше области действия.

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

Удалите два (modules = [MyModule::class]) s или определите модули, относящиеся к деятельности.

Вам не нужно MyModule здесь.Это избыточно, потому что оно уже включено в AppComponent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...