このクラスに他の依存関係がない場合は、実際には依存関係のアクティビティではなく、new
を使用できます。しかし、このようなモジュールと、あなたがあなたの活動(または、この種の活動)のためのサブコンポーネントを持つようにしたいと思い、あなたの質問に答えるために:
@Module
public class TestModule {
private final String arg1;
private final int arg2;
private final boolean arg3;
public TestModule(String arg1, int arg2, boolean arg3) {
this.arg1 = arg1;
this.arg2 = arg2;
this.arg3 = arg3;
}
@Provides DaggerTestClass provideDaggerTestClass() {
return new DaggerTestClass(arg1, arg2, arg3);
}
}
、あなたは次のようにそれを使用したい:
IndexApplication.getApplication().getAppComponent()
.daggerTestSubcomponent(new DaggerTestModule("arg1", 2, true))
.inject(this);
しかし、このクラスでは他の依存関係を持っているあなたは、あなたはおそらく、実際に(多分あなたはAutoFactoryを使用するために生成される)の工場を利用したいと思います場合は、作成されたオブジェクトを「手動注入」:
private DaggerTestClass daggerTestClass; // note: no @Inject here
// …
// Inject other dependencies into the activity
IndexApplication.getApplication().getAppComponent().inject(this);
// "manually inject" the DaggerTestClass
this.daggerTestClass = IndexApplication.getApplication().getAppComponent()
.daggerTestFactory().create("arg1", 2, true);
ありがとうございましたが、私は広告が必要です私はちょうど私が私の既存のクラスを注入できない理由を説明する例を掲示しました。私はそれが私が望むものだと思う。 – user3057944
提案したソリューションを実装しようとしましたが、メソッドがありません.daggerTestFactory() – user3057944
本当に追加する必要があります。 (またはあなたのアクティビティに注入しますが、別のフィールドを初期化するために一度しか使用しません...) –