ApplicationComponent.java

@Component(modules = SomeModule.class)
@ApplicationScope
public interface ApplicationComponent {
    // stuff
    ActivityComponent activityComponent();
}


ActivityComponent.java

@Subcomponent(modules = AnotherModule.class)
@ActivityScope
public interface ActivityComponent {
    // stuff
    void inject(MainActivity mainActivity);
}


可以使用this之类的内容覆盖SomeModule。但是AnotherModule呢?

一种解决方案是将这两个组件分开,但是如果我想重用父级的一些绑定怎么办?

编辑:

MainActivity.java

onCreate(Bundle bundle) {
    getApplicationComponent().getActivityComponent().inject(this);
}


编辑2:

ActivityRyle.java

init() {
    application.setComponent(DaggerApplicationComponent.builder()
                    .someModule(new TestSomeModule(application))
                    .build();
}


edit3:我试图避免在Application(创建主要组件的地方)中布线太多。

最佳答案

您需要将模块声明为子组件工厂方法的输入参数。

10-04 10:04