私はDaggerとDIを使用する初心者です。依存関係をそのアクティビティの断片に挿入するためにAndroidInjectionリゾルバを使用しようとしています。Android Daggerと任意の瞬間にモジュールを設定する
一般的に、私はDagger.androidを使用した場合には、私はMyAppComponent
を作成し、AndroidInjection.inject(Activity/Fragment/etc..)
を使用するためにAndroidInjectionModule
をインストールする必要があり、ことを理解しました。このようにして、Daggerが適切なインジェクタを生成できるようにするため、SubcomponentsのインタフェースをBuildersに提供しました。
しかし、サブコンポーネント、つまりパラメータ化されたコンストラクタを持つモジュールに依存するDeviceFragmentSubcomponentがある場合はどうなりますか?
@Subcomponent(modules = {DeviceModule.class})
public interface DevicePageFragmentSubcomponent extends AndroidInjector<DevicePageFragment>{
@Subcomponent.Builder
public abstract class Builder extends AndroidInjector.Builder<DevicePageFragment>{
public abstract Builder setDeviceModule(DeviceModule deviceModule);
}
}
@Module
public class DeviceModule {
private Device mDevice;
public DeviceModule(Device device) {
mDevice = device;
}
@Provides
public Device provideDevice(){
return mDevice;
}
}
その断片でAndroidInjection.inject(this)
を使用するためのDeviceActivity内DeviceModuleインスタンスを設定するために何をすべきか?
作成アプリケーションの依存関係ツリーではなく、任意のイベントで、必要なモジュールを追加できますか?
dagger.android能力の説明に感謝します。私はこのように行こうとはしません。実際には、私はモジュールでオブジェクトを非カプセル化し、このオブジェクトをActivityとFragmentsの間で共有しました。今、私のニーズを満たしています。そして、はい、Daggerを使用するオプションがたくさんあります。依存ツリーが作成された後、徐々にモジュールを追加することに興味がありました。それは答えと思われます) – atlascoder