1

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();

}
4

2 に答える 2