Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 匕首注入类使用匕首保持为空_Java_Android_Dagger 2_Dagger - Fatal编程技术网

Java 匕首注入类使用匕首保持为空

Java 匕首注入类使用匕首保持为空,java,android,dagger-2,dagger,Java,Android,Dagger 2,Dagger,我正在尝试将CacheManager的一个实例注入getTorDepository哪个Dagger可能成功,因为我没有收到任何与Dagger相关的错误。但是在getTorDepository中使用cacheManager时,我会得到一个NullPointerException public class GetTodoRepository { @Inject public CacheManager cacheManager; public RetrofitService

我正在尝试将
CacheManager
的一个实例注入
getTorDepository
哪个Dagger可能成功,因为我没有收到任何与Dagger相关的错误。但是在
getTorDepository
中使用
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)在应用程序类中设置匕首(组件)

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;
}
public GetTodoRepository(@NonNull ResultListener listener) {
    this.listener = listener;
    TodoApplication.getAppComponent().inject(this);
}
}

2)从注入目标类中的
应用程序
类调用
组件
对象

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;
}
public GetTodoRepository(@NonNull ResultListener listener) {
    this.listener = listener;
    TodoApplication.getAppComponent().inject(this);
}

您的组件看起来像什么?@Md.Asaduzzaman组件类现在在问题中可见,您必须将
getToOrepository
注入dagger。你做了吗?@Md.Asaduzzaman我只做了我粘贴的东西。给匕首注射是什么意思?