2つのコンポーネント:AppComponent
とApiComponent
があります。私は、ApiComponent
のAppComponent
と、ApiComponent
が注入されているオブジェクトで提供されている依存関係を使いたいと思います。だから、私はApiComponent
をAppComponent
のサブコンポーネントとして見る。私はdependecies
ディレクティブを使用してApiComponent
で依存関係としてAppComponent
を宣言している:ここでダガー2サブコンポーネント注入エラー
@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
誰もが何が起こっているかの手掛かりを持っていますか?私はあなたの助けに感謝します。
私のサブコンポーネント以外の問題を解決しました.Dagger 2を使うほど、私はそれほど魅力的ではありません。それはちょうどJavaの...それのいくつかは生成された、いくつかはない! – OceanLife