dagger2注入字段NullPointerException

时间:2016-10-11 15:14:47

标签: android dagger-2

我在我的项目中使用了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总是空的。我该如何解决?

1 个答案:

答案 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。

我希望它有所帮助:)