4
私はApplicationComponent
に追加したのでOkHttpClient
をApplicationModule
から公開する必要があります。このような何か:ダガーApplicationComponentを設定する必要があります
@Module
public class ApplicationModule {
@Provides @Singleton
public OkHttpClient provideOkHttpClient() {
final OkHttpClient.Builder client = new OkHttpClient.Builder();
return client.build();
}
@Singleton
@Component(modules = {ApplicationModule.class})
public interface ApplicationComponent {
OkHttpClient okHttpClient();
}
あなたが右の上記を参照できるように、私はApplicationComponent
でOkHttpClient okHttpClient();
を追加しました。
@Module
public class NetworkModule {
@Provides @ActivityScope
public ProjectService provideProjectService(OkHttpClient client) {
return new ProjectService(client);
}
@Component(dependencies = {ApplicationComponent.class}, modules = {NetworkModule.class})
@ActivityScope
public interface NetworkComponent {
void inject(@NonNull MyActivity myActivity);
}
が、今、私はランタイムエラーを取得するとき:
Caused by: java.lang.IllegalStateException: css.test.demo.ApplicationComponent must be set
at css.test.demo.main.projects.network.DaggerNetworkComponent$Builder.build(DaggerNetworkComponent.java:102)
at css.test.demo.main.projects.MyActivity.onCreate(MyActivity.java:159)
at android.app.Activity.performCreate(Activity.java:6237)
、ここでは、私がMyActivityでそれを構築する方法である:
NetworkComponent = DaggerNetworkComponent.builder()
.NetworkModule(new NetworkModule(this))
.build();
NetworkComponent.inject(this);
私はそれが好きで使う私の
NetworkModule
で今
たとえば、あるクラスのアプリケーションモジュールを完全な依存関係にしたくない場合、私はネットワークモジュールにapplicationModuleを含めましたが、他のクラスは依存関係を満たすためにネットワークモジュールしか必要としません。助けてください。 –
@eCDroidネットワークモジュールがアプリケーションモジュールに依存し、他のいくつかのモジュールがネットワークモジュールに依存する場合、この他のモジュールもアプリケーションモジュールに依存しますが、モジュールを分割/リファクタリングしたり、新しいモジュールを作成したりすることができます。 –