Android dagger2注入字段NullPointerException
我在项目中使用了dagger2,但注入字段始终为空。这是代码 对不起,我的英语很差。 提前谢谢 模块Android dagger2注入字段NullPointerException,android,dagger-2,Android,Dagger 2,我在项目中使用了dagger2,但注入字段始终为空。这是代码 对不起,我的英语很差。 提前谢谢 模块 @Module public class RetrofitModule { @Provides @Singleton Retrofit provideRetrofit() { return new Retrofit.Builder().build(); } } 组成部分 @Component(modules = RetrofitModule.c
@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);
但改造总是无效的。我如何解决它?您不能以这种方式将其注入到活动类中 像这样更改组件并指定活动的确切名称:
@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();
}
}
顺便说一句,请确保您在活动中编写了@Inject before Reformation声明:
@Inject
Retrofit retrofit;
注意:如果您希望在模块中提供singleton,则
整个组件不能不受阻挡,必须对其进行注释
@辛格尔顿
我希望它能有所帮助:)在哪里调用
inject()
?main活动-onCreate()创建组件时,您似乎忘了传递RefughtModule的实例,您应该调用.RefughtModule(new RefughtModule())
.DaggerRetrofitComponent.builder().RefughtModule(new RefughtModule())).build().inject(这个);Android studio告诉我,这个模块的方法不受欢迎。对不起,几天前我很忙。我刚刚试过,它很管用。非常感谢。很高兴听到这个消息,别忘了用绿色支票确认答案✅