私は新しいdagger.android
注入機能を使用していましたが、これまで私は本当に楽しんでいました。Recagler ViewアダプタにDaggerを注入することは可能ですか?2.11
しかし、私はこの小さな問題に遭遇しました。それによって、私が使用しているアダプターまたは基本的に非活動のクラスを注入することは不可能に思えます。
コンストラクタは@Inject
より簡単ですが、コンストラクタを介して私のrecyclerviewにデータを渡しているので、これは私のオプションではありません。
これは、クラスを挿入するためにコンポーネントを呼び出す必要があることを意味します。このようになりますAppComponent
クラスで
:
interface AppComponent : AndroidInjector<App> {
@Component.Builder
abstract class Builder {
abstract fun networkModule(networkModule: NetworkModule): Builder
}
fun inject(someClass SomeClass)
}
言った後.inject()
方法を認識しないDaggerAppComponent
を生成DaggerAppComponent.builder().build()
これはのように思えるので、私は明らかにダガーについて何かを誤解していますクラスを注入する正規の方法。
私はAndroidInjector
から拡張していると思われますが、この場合、どのように非活動性クラスを注入するのですか。私がそのクラスのために@Subcomponent
を作ったとしても、まだ呼び出す必要がありますDaggerAppComponent
この記事を読んでいたのは、この記事https:// blogです。 davidmedenjak.com/android/2017/11/11/dagger-rules-engagement.htmlそして私がアダプタを注入することができなかったという前提を放棄してください。もちろん、記事のように - 私はコピーして貼り付けていましたが、私がその機能を知らないコードを貼り付けていました。アイテムを保持していたアダプタにパブリック変数を追加した後、コンストラクタに渡すことをやめ、必要な依存関係を手間をかけずに注入することができました。ただし、ビュー・モデルにアダプタを注入する必要もあります。 – nmu