Как добавить зависимости к компоненту в dagger2 - PullRequest
0 голосов
/ 23 апреля 2019

Я хочу добавить компонент в корневой компонент, используя новый подход dagger2.

Хорошо работает со старым подходом, когда мы создаем компонент и вручную предоставляем все остальные компонент и модуль.

Но я понятия не имею, как это сделать с новым подходом dagger2.

@Component(modules = {AndroidInjectionModule.class, AppModule.class, ActivityBuilder.class},dependencies = CoreComponent.class)

public interface AppComponent extends AndroidInjector<MyApplication>

 {

  @Component.Builder
    abstract class Builder extends AndroidInjector.Builder<MyApplication> {}

}

любой знает, как добавить Core Component.class в Компонент приложения.

1 Ответ

0 голосов
/ 23 апреля 2019

AndroidInjector имеет предопределенный метод inject, но в остальном обрабатывается так же, как и любой @Component. Итак, я полагаю, вы можете написать свой собственный AppComponent.Builder с нуля:

// In AppComponent, which extends AndroidInjector<MyApplication>
@Component.Builder
interface Builder {
    Builder coreComponent(CoreComponent coreComponent);

    // You may need this for installed @Modules too:
    // public abstract Builder appModule(AppModule appModule);

    // The following setter and build are from AndroidInjector.Builder
    @BindsInstance
    Builder myApplication(MyApplication myApplication);

    AppComponent build();
}

Затем построить AppComponent:

CoreComponent coreComponent = /* ... */;
AppComponent appComponent =
    DaggerAppComponent.builder()
        .coreComponent(coreComponent)
        .myApplication(myApplication)
        .build();

Я не могу комментировать, рекомендуется ли это, хотя, поскольку dagger.android примеры, похоже, предпочитают субкомпоненты, а не зависимости компонентов.

...