Согласно официальным документам: https://google.github.io/dagger/subcomponents.html, я добавляю подкомпонент в @Module, например:
@Module(subcomponents = {MainActivityComponent.class})
public class ContextModule {
private Context mContext;
public ContextModule(Context context) {
mContext = context;
}
@Provides
public Context provideContext() {
return mContext;
}
}
И объявите мой компонент и подкомпонент следующим образом:
@Component(modules = ContextModule.class)
public interface AppComponent {
Context provideContext();
MainActivityComponent getMainActivityComponent();
}
@Subcomponent(modules = {HardwareModule.class, SoftwareModule.class})
public interface MainActivityComponent {
void injectMainActivity(MainActivity activity);
}
Но код не может быть успешно скомпилирован. Ошибка такова:
Error:(11, 1) : com.kilnn.dagger2.example.MainActivityComponent doesn't have a @Subcomponent.Builder, which is required when used with @Module.subcomponents
Я не знаю, как написать @Subcomponent.Builder, и если я удалю объявление подкомпонента в @Module, все будет в порядке. Поэтому я не знаю, как правильно использовать подкомпонент.