2017-05-09 3 views
0

私はジェフ・ボウマンがDagger 2.10 Android subcomponents and buildersで説明したことをやっています。 これで、@Bindsのみを持つ抽象モジュールを追加したいと思っています どうすればいいですか?もし、あなたのモジュールは、抽象クラスまたはインタフェースである、またはそれが公共のパラメータなしのコンストラクタを持っている、あなたができるなら、私はおそらくダガー2.10抽象モジュールを追加

答えて

2

をseedInstanceに何かを追加する必要がありますので、私はseedInstance私の活動はその抽象モジュール内部の見えない上書きした後

インスタンスを提供せずにモジュールリストに追加すれば、すべてうまくいくはずです。これが意味:

@Subcomponent(modules = {YourAbstractModule.class /*, ... */}) 
public interface YourActivitySubcomponent extends AndroidInjector<YourActivity> { 

@ContributesAndroidInjectorを使用して:

@ContributesAndroidInjector(modules = {YourAbstractModule.class /*, ... */}) 
@YourScope 
abstract YourActivity bindYourActivityInjector(); 
+0

私は取得しています:エラー:(8,8)エラー:[dagger.android.AndroidInjector.inject(T)] com.rachapps。 testApp.activity.MainActivityは、\ @Injectコンストラクターなしで、または\ @ Provides-Annotatedメソッドからは提供できません。このタイプはメンバーのインジェクションをサポートしますが、暗黙的には提供できません。 com.rachapps.testapp.activity.MainActivity ... – wioskamala

+1

[seedInstance'を上書きする](https://github.com/RadoslawChmielewski/TempRep/blob/master/app/src/main/java/com/rachapps/) testapp/activity/MainSubComponent.java#L20)、Daggerはそれをもはや '@ BindsInstance'としてカウントしないので、MainActivityはグラフに挿入できません。そのメッセージを受け取っているのは、MainActivityを作成するよう求めているように、MainModuleのバインディングがDaggerを参照しているからです。モジュールを通して利用可能にしたり、別の '@BindsInterface abstract'メソッドを定義したりする必要があります。 –

+0

ご協力いただきありがとうございます! – wioskamala

関連する問題