Dagger 2依赖注入不起作用

时间:2016-05-23 10:09:17

标签: java android dependency-injection dagger-2

我对Dagger 2非常陌生,我试图让this基本示例进行一些小修改。

这是我到目前为止所做的:

组件类

@Component(modules = {MyModule.class})
public interface MyComponent {
void inject(Object object);
} 

模块类

@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);

带注释的字段仍为空。我怀疑问题在于接口方法中的Object类型。在示例中,有一个Activity而不是。但是我需要在不是活动的类中使用DI。

任何人都可以帮助我吗?谢谢。

1 个答案:

答案 0 :(得分:3)

@Inject没有inject(MyClass)个带注释的字段。因此注射效果很好 - 它没有什么可注射的 您必须使用Object代替{{1}}的实际类,以便生成代码并注入字段。

Dagger在编译时生成源代码。如果它不知道实际的类,它就无法为它创建代码。