【发布时间】:2016-11-21 10:37:47
【问题描述】:
我有 2 个组件:AppComponent 和 ApiComponent。我想在ApiComponent 和ApiComponent 注入的对象中使用AppComponent 提供的依赖项。所以我将ApiComponent 视为AppComponent 的子组件。我已经使用dependecies 指令将AppComponent 声明为ApiComponent 中的依赖项:
@ApiScope
@Component(dependencies = { AppComponent.class},
modules = { ApiModule.class })
public interface ApiComponent {
void inject(Application application);
void inject(IntentService1 service1);
SampleApi sampleApi();
}
这是我的 AppComponent:
@Singleton
@Component (modules = { AppModule.class })
public interface AppComponent {
void (Class2 class2);
Bus bus();
SharedPreferences sharedPreferences();
SampleApplication sampleApplication();
}
我的 ApiModule 的相关部分如下所示:
@Module
public final class ApiModule {
@Provides
@ApiScope
SampleApi provideSampleApi(Retrofit retrofit) {
return retrofit.create(SampleApi.class);;
}
}
我在 IntentService1 的 onCreate() 方法中触发了注入:
@Inject SampleApi sampleApi;
@Override
public void onCreate() {
SampleApplication.get().getApiComponent().inject(this);
}
但我得到以下编译错误:
SampleApi cannot be provided without an @Provides or @Produce-annotated method
有人知道发生了什么吗?感谢您的帮助。
【问题讨论】:
标签: android dependency-injection dagger-2