ダガー2の新機能です。thisの基本的なサンプルを少し修正して動作させようとしています。ダガー2依存性注入が機能しない
これは私がこれまで持っているものです。
Componentクラス
@Component(modules = {MyModule.class})
public interface MyComponent {
void inject(Object object);
}
Moduleクラス
@Module
public class MyModule {
@Provides
@Singleton
public Retrofit getRetrofit(){
return new Retrofit();
}
}
静的インジェクター
public class MyStaticInjector {
private static MyComponent di;
public static void inject(Object object){
if(di == null){
di = DaggerMyComponent.builder().build();
}
di.inject(object);
}
}
問題は、私は
MyStaticInjector.inject(this);
を行うたび注釈付きのフィールドはまだヌルであるということです。私は問題がインターフェイスメソッドの型オブジェクトであると思われる。この例では、代わりにアクティビティがあります。しかし、私はアクティビティではないクラスでDIを使用する必要があります。
誰でも手伝ってもらえますか?ありがとうございました。
'Object'には' @ Inject'アノテーション付きフィールドがありません。したがって注入はうまくいく。それは注入するものは何もありません。 'Object'の代わりに実際のクラスを使わなければならないので、コードを生成してフィールドを注入することができます。 –
私は参照してください...ジェネリック注射器メソッドを作る方法はありますか?または、私はインターフェイスのインジェクションクラスごとにメソッドをインジェクションするオーバーロードを持っていますか? – Aurasphere
Daggerはコンパイル時にソースコードを生成します*。クラスについて知らない場合は、そのクラスのコードを作成することはできません。あなたはいくつかのチュートリアルを読んで、短剣についてもっと学びましょう。特にコンストラクタインジェクションを見てください。 –