Это мой компонент Fragment dagger2:
@PreMainFrag
@Component(modules = {MainFragModule.class},
dependencies = AppComponent.class)
public interface MainFragComponent {
void inject(MainFragment mainFragment);
}
, а это MainFragModule:
@Module
public class MainFragModule {
MainFragment mainFragment;
public MainFragModule(MainFragment mainFragment) {
this.mainFragment = mainFragment;
}
@Provides
@PreMainFrag
MainFragment getMainFragment(){
return mainFragment;
}
}
Но когда я хочу сделать кинжал, я получил эту ошибку:
symbol: class DaggerAppComponent
location: package com.t.stm.application.di
E:\Projects\Android\Stm\Stm\stm\src\main\java\com\t\stm\mainFragment\main\di\MainFragComponent.java:9: error: com.t.stm.mainFragment.main.di.MainFragComponent (unscoped) cannot depend on scoped components:
@Component(modules = {MainFragModule.class},
^
@com.t.stm.application.di.AppScope com.t.stm.application.di.AppComponent
2 errors
:stm:compileDebugJavaWithJavac FAILED
Что происходит?Я добавил @PreMainFrag
на свой компонент !!
Это мой класс области видимости:
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface PreMainFrag {
}
************************** РЕДАКТИРОВАТЬ *******************************
Это AppComponent:
@AppScope
@Component(modules = {NetworkModule.class,
AppRetroServiceModule.class,
MainRepositoryModule.class})
public interface AppComponent {
Gson getGson();
APIService getService();
@AppQualifierHttpClientThread
APIService getServiceWithThread();
MainRepository getMainRepository();
}
и область его приложения:
@Scope
@Retention(RetentionPolicy.CLASS)
public @interface AppScope {
}
Я также изменил @Retention(RetentionPolicy.CLASS)
на @Retention(RetentionPolicy.RUNTIME)
, но ничего не изменилось.
Когда я удалил dependencies = AppComponent.class
изMainFragComponent
все в порядке, и я могу сделать кинжал, но в чем проблема зависимости?