Dagger 2 Dependency Injection
Я использую кинжал 2 и модифицирую у меня два модуля
1. Прикладной модуль
2.BlogModule
@Module
public class BlogModule {
@PerActivity
@Provides
ApiService provideApiService(Retrofit retrofit){
return retrofit.create(ApiService.class);
}
}
ApplicationComponent
@Singleton
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
Retrofit exposeRetrofit();
Context exposeContext();
}
И я добавил зависимость в BlogComponent
@PerActivity
@Component(modules = BlogModule.class,dependencies = ApplicationComponent.class)
public interface BlogComponent {
void inject(BaseActivity mainActivity);
}
И в моем приложении
public class BlogApplication extends Application {
private ApplicationComponent mApplicationComponent;
@Override
public void onCreate() {
super.onCreate();
initializeApplicationComponent();
}
private void initializeApplicationComponent() {
mApplicationComponent= DaggerApplicationComponent
.builder().applicationModule(new ApplicationModule(this))
.build();
}
public ApplicationComponent getApplicationComponent(){
return mApplicationComponent;
}
Когда я пытаюсь добавить BlogComponent в My Base Actvity, я не могу добавить getApplicationComponent()
в applicationComponent(getApplicationComponent())
DaggerBlogComponent.builder()
.applicationComponent()
.blogModule(new BlogModule())
.build().inject(this);
В соответствии с учебником они вводили, как показано ниже
DaggerCakeComponent.builder()
.applicationComponent(getApplicationComponent())
.cakeModule(new CakeModule(this))
.build().inject(this);
Может ли кто-нибудь помочь мне, как я могу это исправить. Спасибо
1 ответ
Вы должны иметь возможность получить к нему доступ из своего приложения
DaggerBlogComponent.builder()
.applicationComponent(((BlogApplication)getApplication()).getApplicationComponent())
.blogModule(new BlogModule())
.build().inject(this);