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
(创建主要组件的地方)中布线太多。 最佳答案
您需要将模块声明为子组件工厂方法的输入参数。