我一直在使用新的dagger.android
注入功能,到目前爲止我真的很喜歡它們。是否有可能向Dagger注入Recycler View適配器2.11
但是,我遇到了這個小問題,因此它似乎不可能現場注入一個適配器或基本上我正在使用的任何非活動類。
我知道這將更容易@Inject
的構造函數,但由於我通過構造函數將數據傳遞給我的recyclerview,這不是我的選擇。
這意味着我必須調用組件來注入我的類。
隨着AppComponent
類,看起來像這樣:
interface AppComponent : AndroidInjector<App> {
@Component.Builder
abstract class Builder {
abstract fun networkModule(networkModule: NetworkModule): Builder
}
fun inject(someClass SomeClass)
}
生成DaggerAppComponent
說後不承認.inject()
方法DaggerAppComponent.builder().build()
我顯然誤解的東西有關,因爲匕首,這似乎像規範的注入類的方法。
我懷疑這是因爲我從AndroidInjector
延伸,但如果是這種情況,我將如何注入一個非活動類。因爲即使我爲此類製作了@Subcomponent
,它仍然需要調用DaggerAppComponent
我最終得到這個結果的方式是閱讀本文https:// blog。 davidmedenjak.com/android/2017/11/11/dagger-rules-engagement.html並放棄了我不能構造函數注入適配器的假設。當然,我可以 - 但就像文章所說 - 我正在複製和粘貼我不知道其功能的代碼。在向持有這些項目的適配器添加公共變量後,我可以不再通過構造函數傳遞它們,然後無需大驚小怪地注入所需的依賴項。但是,這也意味着必須將適配器注入視圖模型。 – nmu