Dagger2 を初めて使用します。
私のAndroidアプリケーションには、Applicationを拡張するMyApplicationクラスがあります。関連する画像処理メソッドのコレクションである ImageAssistant クラスもあります。私の MyApplicaiton クラスでは、使用するすべてのアクティビティに対して ImageAssistant をインスタンス化していました。
現在、Dagger2 で動作させようとしていますが、ImageAssistant を提供するモジュールでコンテキストを渡す方法がわかりません
これは私のコードがどのように見えたかです:
public class ImageAssistant {
Context context;
public ImageAssistant(Context context){
this.context = context;
}
// A bunch of methods...
}
public class MyApplication extends Application {
public ImageAssistant imageAssistant;
public void onCreate() {
imageAssistant = new ImageAssistant(this);
}
}
さあ、ダガー2に入ってください、これが私が持っているものです
public class ImageAssistant {
Context context;
@Inject
public ImageAssistant(Context context){
this.context = context;
}
// A bunch of methods...
}
public class MyApplication extends Application {
@Inject
public ImageAssistant imageAssistant;
public void onCreate() {
}
}
パッケージ内 .modules:
AppModule.java
@Module
public class AppModule {
@Provides
ImageAssistant provideImageAssistant() {
return new ImageAssistant(); // HERE A CONTEXT IS NEEDED. WHERE TO GET IT FROM?
}
}
編集:これが私のモジュールの現在の外観ですが、すべてを結び付ける方法はまだわかりません:
@Module
public class AppModule {
private MyApplication application;
public AppModule(MyApplication application) {
this.application = application;
}
@Provides
Context provideApplicationContext() {
return this.application;
}
@Provides
ImageAssistant provideImageAssistant(ImageAssistant imageAssistant) {
return imageAssistant;
}
}
これが AppComponent です。
@Singleton
@Component(modules = {AppModule.class})
public interface AppComponent {
ImageAssistant provideImageAssistant();
Context context();
}