0
我正在做什麼Jeff Bowman在Dagger 2.10 Android subcomponents and builders描述,它工作得很好。 現在我想添加抽象模塊只有@Binds 我該怎麼做?匕首2.10添加抽象模塊
之後我重寫seedInstance我的活動是不是抽象的模塊中可見,所以我也許應該添加什麼東西seedInstance
我正在做什麼Jeff Bowman在Dagger 2.10 Android subcomponents and builders描述,它工作得很好。 現在我想添加抽象模塊只有@Binds 我該怎麼做?匕首2.10添加抽象模塊
之後我重寫seedInstance我的活動是不是抽象的模塊中可見,所以我也許應該添加什麼東西seedInstance
如果您的模塊是一個抽象類或接口,或者它有一個公共的無參數的構造函數,你可以只需將它添加到你的模塊列表中,而不需要提供一個實例,一切都可以正常工作。這意味着:
@Subcomponent(modules = {YourAbstractModule.class /*, ... */})
public interface YourActivitySubcomponent extends AndroidInjector<YourActivity> {
或使用@ContributesAndroidInjector:
@ContributesAndroidInjector(modules = {YourAbstractModule.class /*, ... */})
@YourScope
abstract YourActivity bindYourActivityInjector();
我得到:錯誤:(8,8)錯誤:[dagger.android.AndroidInjector.inject(T)] com.rachapps。 testapp.activity.MainActivity不能提供沒有\ @Inject構造函數或從一個\ @提供註釋的方法。此類型支持成員注入,但不能隱式提供。 com.rachapps.testapp.activity.MainActivity ... – wioskamala
By [overriding'seedInstance'](https://github.com/RadoslawChmielewski/TempRep/blob/master/app/src/main/java/com/rachapps/ testapp/activity/MainSubComponent.java#L20),Dagger不再將它計爲'@ BindsInstance',所以MainActivity不能被注入到圖中。你會得到這個消息,因爲你在MainModule中的綁定看起來像Dagger,就像你可能會問它爲你創建一個MainActivity一樣,它不能這樣做。你需要通過一個模塊使其可用,或者定義一個不同的'@BindsInterface abstract'方法。 –
感謝您的幫助! – wioskamala