java - Dagger 注入(inject)的类在 Dagger 中保持为 null

标签 java android dagger-2 dagger

我正在尝试将 CacheManager 的实例注入(inject) GetTodoRepository 中,Dagger 可能会成功执行此操作,因为我没有收到任何与 dagger 相关的错误。但是当在 GetTodoRepository 中使用 cacheManager 时,我得到一个 NullPointerException

public class GetTodoRepository {

    @Inject
    public CacheManager cacheManager;

    public RetrofitService retrofitService;
    private ResultListener listener;

    public GetTodoRepository(@NonNull ResultListener listener) {
        this.retrofitService = new RetrofitService();
        this.listener = listener;
    }
}

@Module
public class AppModule {

    private Application application;

    public AppModule(Application application) {
        this.application = application;
    }

    @Provides
    @Singleton
    public Context providesApplicationContext() {
        return application.getApplicationContext();
    }

    @Provides
    @Singleton
    public CacheManager provideCacheManager(Context Context) {
        return new CacheManager(Context);
    }

}



@Singleton
@Component(modules = AppModule.class)
public interface TodoComponents {
    void inject(MainViewModel mainViewModel);
    void inject(CacheManager cacheManager);
    void inject(GetTodoRepository getTodoRepository);
    void inject(PostTodoRepository postTodoRepository);
}

最佳答案

1)在Application类中设置Dagger(组件)

public class TodoApplication extends Application {

private static AppComponent components;

@Override
public void onCreate() {
    super.onCreate();
    components = DaggerAppComponent.builder()
            .appModule(new AppModule(this))
            .build();
}


public static AppComponent getAppComponent() {
    return components;
}

}

2) 从注入(inject)目标类中的Application类调用Component对象

public GetTodoRepository(@NonNull ResultListener listener) {
    this.listener = listener;
    TodoApplication.getAppComponent().inject(this);
}

关于java - Dagger 注入(inject)的类在 Dagger 中保持为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59912550/

相关文章:

java - 从 URL 更改动态图像

java - Dagger 2 - 跨模块依赖

android - Dagger2 组件依赖于多个作用域组件

java - Dagger 2 Activity 注入(inject)不起作用

java - 对加载最多约 30,000 条记录的相关下拉列表的性能影响

java - 可执行的 .jar 文件无法运行

java - 使用包裹发送未知数据类型的对象时出现问题

java - Spring AOP问题

Java 进度条反馈

android - 使用 AsyncTask 从数据库填充 ListView