当前位置: 首页 > 知识库问答 >
问题:

Dagger2注入空对象

太叔小云
2023-03-14

我刚开始使用Dagger并尝试使用dagger2进行DI,但看起来它给我的活动注入了一个空演示器。下面是我的代码

公共类TasksActivity扩展AppCompatActivity{

@Inject
TasksContract.Presenter mTasksPresenter;
......

@Override
protected void onCreate(Bundle savedInstanceState) {
    ... ...

    DaggerTasksComponent.builder()
            .appComponent(MyApp.getAppComponent())
            .tasksModule(new TasksModule())
            .build()
            .inject(this);

   ... ...
}
 @Module
    public class TasksModule {

    @Provides
    @ActivityScoped
    TasksContract.Presenter providePresenter(TaskDataRepository taskDataRepository, TasksContract.View view) {
        return new TasksPresenter(taskDataRepository, view);
    }

    @Provides
    @ActivityScoped
    TasksContract.View provideView() {
        return new TasksFragment();
    }
}
@ActivityScoped
    @Component (modules = TasksModule.class, dependencies = AppComponent.class)
    public interface TasksComponent {
        void inject(TasksActivity activity);
    }

共有1个答案

鲁炳
2023-03-14

在您的TaskModule上创建一个构造函数,传递这个参数taskDataRepository和view,然后在您的TaskModule上使用它。因此您的初始化应该如下所示

  DaggerTasksComponent.builder()
            .appComponent(MyApp.getAppComponent())
            .tasksModule(new TasksModule(taskDataRepository, view))
            .build()
            .inject(this);
 类似资料:
  • 我学习了Dagger2,并尝试使用MVVM制作应用程序。我根据方案创建了Dagger类(模块、组件、BaseApplication),但当我尝试将QuotableAPI对象注入ViewModel时,Dagger不会生成DaggerAppComponent类(在ViewModel构造函数中没有QuotableAPI生成)。 报价视图模型 应用程序模块 应用组件 基础应用 ViewModelFacto

  • 本文向大家介绍Dagger2 Android依赖注入学习笔记,包括了Dagger2 Android依赖注入学习笔记的使用技巧和注意事项,需要的朋友参考一下 前言 最近在用 MVP + RxJava + Retrofit 写项目,觉得相对于其他的开发框架,这的确是给我们带来了很多方便,但是在网上搜寻相关资料的时候,总是能看到 MVP + RxJava + Retrofit + Dagger 这样的搭

  • 我试图将一组房间组件注入存储库,存储库本身使用Dagger2注入ViewModel(在片段中)。 代码如下。 片段: 视图模型: 我的存储库: 最后,对于我的匕首类,我有两个模块: 和我的AppComponent: Dagger编译正常,我可以访问并构建它。但是是不可访问的(检查类将其显示为私有),我需要实际注入依赖项的方法也是如此。结果我得到错误: 我该如何解决这个问题?

  • 嗨,当我尝试在下面的类中注入Doa接口时,我正在使用mvvm和dagger2 我的接口类

  • 我已经编写了一个EJB3业务逻辑并部署在GlassFish下。现在,我将通过同一个容器中的客户机,用@EJB注入接口来测试它。 数据源bean是一个在构造函数中设置连接并通过get()方法释放的无状态bean

  • 问题内容: 我在Android应用程序中将Dagger2用于DI。我发现我必须为使用@Inject字段的每个类编写注入方法。有没有一种方法可以只注入父类,而不必在每个子类上调用inject?以活动为例。我有一个“ 每个活动都从中延伸”的内容。有没有一种方法,我可以在BaseActivity的组件中创建一个注入方法,然后在BaseActivity的onCreate中调用inject,子活动中的@in