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);
Другие вопросы по тегам