ダガー2で作業を開始しました。アプリケーションレベルの依存関係の依存グラフを作成しました。今私は特定のアクティビティに必要な依存関係を作成したいので、別のアクティビティ用にComponent
を作成して、そのコンポーネントのモジュールとスコープを作成しました。今、私はすべてのコードを書くことが終わったときにプロジェクトをビルドしますが、私は解決できないコンパイラエラーが発生します。ダガー2、インターフェイスを依存関係に追加する方法
ここは私がやっていることです。私は
/Users/Zeeshan/Desktop/personal/Feeder/app/src/main/java/io/droidninja/feeder/FeederApplication.java Error:(10, 31) error: cannot find symbol class DaggerFeederApplicationComponent /Users/Zeeshan/Desktop/personal/Feeder/app/src/main/java/io/droidninja/feeder/ui/activities/FeedsCatalogActivityComponent.java Error:(13, 20) error: io.droidninja.feeder.ui.adapters.SelectedInterfaceListener cannot be provided without an @Provides-annotated method. io.droidninja.feeder.ui.adapters.SelectedInterfaceListener is injected at io.droidninja.feeder.ui.activities.FeedsCatalogActivityModule.catalogAdapter(…, mSelectesInterfaceListener) io.droidninja.feeder.ui.adapters.CatalogAdapter is provided at io.droidninja.feeder.ui.activities.FeedsCatalogActivityComponent.getCatalogAdapter() Error:Execution failed for task ':app:compileDebugJavaWithJavac'. Compilation failed; see the compiler error output for details.
は理解がどのような私はある、このエラーを取得するビルド時にここで
@FeedsCatalogActivityScope
@Component(modules = FeedsCatalogActivityModule.class, dependencies = FeederApplicationComponent.class)
//My activity requires Catalog adapter so i am creating dependency for that
public interface FeedsCatalogActivityComponent {
CatalogAdapter getCatalogAdapter();
}
は、だから今スコープ
@Scope
public @interface FeedsCatalogActivityScope {
}
モジュールここ
@Module
public class FeedsCatalogActivityModule {
private final SelectedInterfaceListener selectedInterfaceListener;
public FeedsCatalogActivityModule(SelectedInterfaceListener selectedInterfaceListener) {
this.selectedInterfaceListener = selectedInterfaceListener;
}
@Provides
@FeedsCatalogActivityScope
public CatalogAdapter catalogAdapter(Picasso picasso, SelectedInterfaceListener mSelectesInterfaceListener) {
return new CatalogAdapter(picasso, mSelectesInterfaceListener);
}
}
されています私はに問題がある。 SelectedInterfaceListener
をどうすればいいですか?それはインターフェイスです。
P.S私はdagger2の新機能です。ちょうどそれを使い始めました。
に方法を提供し、セットアップ方法を作成する活動は、そのインターフェイスを実装しています。その場合、どうしたらいいですか? –
https://guides.codepath.com/android/Dependency-Injection-with-Dagger-2#dependent-components-vs-subcomponents – TmTron
@ ZeeshanShabbirはなぜそれがアクティビティによって実装されたがっているのだろうと思っています。コンポーネントをビルドするときに、モジュールコンストラクタ内の参照として 'this 'を渡してください。 – Distjoy