Android dagger2注入字段NullPointerException

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

我在项目中使用了dagger2,但注入字段始终为空。这是代码

对不起,我的英语很差。 提前谢谢

模块

@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告诉我,这个模块的方法不受欢迎。对不起,几天前我很忙。我刚刚试过,它很管用。非常感谢。很高兴听到这个消息,别忘了用绿色支票确认答案✅