私はこのプロジェクトを見るまで、Dagger 2で依存性注入がどのように機能するかを理解していました。Dagger 2この例のコンストラクタインジェクション
public class CharacterDetailPresenter implements Presenter {
private final CharacterDetailsUsecase mGetCharacterInformationUsecase;
@Inject
public CharacterDetailPresenter(CharacterDetailsUsecase getCharacterInformationUsecase) {
mGetCharacterInformationUsecase = getCharacterInformationUsecase;
}
}
//presenter methods
プレゼンターが注入されたアクティビティ:
public class CharacterDetailActivity extends AppCompatActivity implements CharacterDetailView {
@Inject CharacterDetailPresenter mCharacterDetailPresenter;
@Override
public void onCreate(Bundle savedInstanceState) {
initializeDepedencyInjector();
//
}
private void initializeDependencyInjector() {
AvengersApplication avengersApplication = (AvengersApplication) getApplication();
int avengerId = getIntent().getIntExtra(EXTRA_CHARACTER_ID, -1);
DaggerAvengerInformationComponent.builder()
.activityModule(new ActivityModule(this))
.appComponent(avengersApplication.getAppComponent())
.avengerInformationModule(new AvengerInformationModule(avengerId))
.build().inject(this);
}
//
}
、問題のモジュール。
他のモジュールに含まれていないときに、プレゼンターがどのようにアクティビティに注入されるのか分かりません。私が得意でないコンストラクタの注射について何かありますか?だから、
最初はそれは私がダガーは明らかにそれを綴るためのプレゼンターが、感謝を作成することを考えたものです。私は間違いなく、将来、生成されたコードを見ていきます。 – hakuteru
あなたのブログには、コンストラクタインジェクションを行う方法の例は示されていません。私はコンストラクタの注入を試みましたが、動作しませんでした。どうぞご覧くださいhttps://stackoverflow.com/q/45192878/5214893 –
@eCDroid仕事を見ています。私は本当にあなたのプロジェクトでそれを使用しようとする前にDaggerをつかんでみることをお勧めします。単一のファイルを開き、パッケージのローカルコンポーネント、モジュール、クラス(依存関係の有無にかかわらず)を宣言し、コンパイルを続けます。このようにDaggerでできることとできないことをすぐに理解できます。 DaggerがConstructor Injectionのコンストラクタを呼び出すとき、およびフィールド注入を行うためにコンポーネントに 'inject(MyClass)'メソッドを登録する必要があるときは、必ず確認してください。 –