2016-04-25 15 views
1

私はダガー2を学んでいます。私はかなりフォローしません。 だから私はあなたの中に注入するために使用することができる活動をspecifiyする必要があるコンポーネントであることを理解:異なる活動のダガーインジェクション

Singleton 
@Component(modules={AppModule.class, NetModule.class}) 
public interface NetComponent { 
    void inject(MainActivity activity); 
} 

まず第一に、なぜ私はこれを指定する必要がありますか? (私は今までユーザーに可変の活動をされていません)。

しかし、主な質問は、ここにすべて10個のアクティビティやフラグメントが必要なのですか?これを行う正しい方法ですか、おそらくアプリケーションに挿入することはできますか?アプリケーション全体でNetComponentを使用したい場合は、どうすればよいのでしょうか。

おかげ

答えて

1

[はいそうあなたの活動のすべてのためのコンポーネントを供給1を持っている場合。あなたはすべての人のためにinject()メソッドを書かなければなりません。 https://github.com/google/dagger/issues/214良い

@Singleton 
@Component(modules={AppModule.class, NetModule.class}) 
public interface NetComponent { 
    void inject(MainActivity activity); 
    void inject(SplashActivity activity); 
    void inject(AnotherActivity activity); 
} 

悪い:

@Singleton 
@Component(modules={AppModule.class, NetModule.class}) 
public interface NetComponent { 
    void inject(BaseActivity activity); 
} 

また、それは、このエラーが発生しますので、あなたは、基本クラスの中で注入を使用することができないことに、注意してくださいまた、注入したくない場合でも、APIサービスなどを取得するだけで注入することはできませんが、使用する:

@Singleton 
@Component(modules={AppModule.class, NetModule.class}) 
public interface NetComponent { 
    SomeNetworkOrApiClass getNetworking(); 
} 

そして、必要に応じて、コンポーネントからネットワークを取得するだけです。

https://github.com/codepath/android_guides/wiki/Dependency-Injection-with-Dagger-2

https://github.com/konmik/konmik.github.io/wiki/Snorkeling-with-Dagger-2

、この有用な記事を読むことをお試しください

関連する問題