我想使用新的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添加到App Component中。
答案 0 :(得分:0)
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
示例似乎更喜欢子组件而不是组件依赖项。