我在我的项目中使用了dagger2,但是注入字段始终为null。这是代码。
抱歉,我的英语很差。 提前谢谢。
模块
@Module
public class RetrofitModule {
@Provides
@Singleton
Retrofit provideRetrofit() {
return new Retrofit.Builder().build();
}
}
组件
@Component(modules = RetrofitModule.class)
public interface RetrofitComponent {
void inject(Activity activity);
}
在MainActivity中,我写了这个
DaggerRetrofitComponent.builder().build().inject(this);
但是Retrofit总是空的。我该如何解决?
答案 0 :(得分:2)
你不能以这种方式注入你的Activity类!
更改您的组件,并指定您的活动的确切名称:
@Component(modules = RetrofitModule.class)
public interface RetrofitComponent {
void inject(MainActivity activity);
}
然后也许你必须改变你的模块或其他任何符合你需要的模块:
@Module
public class RetrofitModule {
@Provides
Retrofit provideRetrofit() {
return new Retrofit.Builder().baseUrl("http://google.com").build();
}
}
顺便说一下,确保在活动中的Retrofit声明之前写了@Inject:
@Inject
Retrofit retrofit;
注意:如果你想在你的模块中提供单例,那么 整个组件不能保持不受限制,必须注释 @Singleton。
我希望它有所帮助:)