Android Dagger @Injects are null



>dagger在踢我的屁股。

我有以下布局。

  • 注入到对象图中的主活动。
  • MainActivity @Injects MainPresenter 界面。这是通过返回具体实现的主模块提供的。
  • 具体的 MainPresenter 实现采用 FileContentInteractor 接口。这在 InteractorModule 中提供,它返回一个具体的 FileContentInteractor 实现。
  • MainModule 可以做到这一点,因为它包含 InteractorModule.class

到目前为止,一切都很棒。从这一点开始,它变得棘手。

具体的 FileContentInteractor 实现使用 @Inject 注入一些成员变量。这些成员变量都是通过其各自的模块提供具体实现的接口。

一个例子是@Inject ThreadExecutor threadExecutor。我以为会提供这个,因为;

  • InteractorModule 包括 ExecutorModule.class。
  • ExecutorModule.class @Provides ThreadExecutor 以 TaasExecutor 对象的形式实现。
  • TaskExecutor 对象没有注入的依赖项。

当我运行我的应用程序并且主活动打开时,会发生以下情况;

  • MainActivity 调用 MainPresenter 实现的方法 - 工作正常!
  • MainPresenter有一个FileContentInteractor实现并在其上调用一个方法 - 工作
  • FileContentInteractor 实现中的方法尝试调用 ThreadExecutor 实现中的方法(@Injected为成员变量(。此操作失败,因为 @Injected 线程执行器实现为空。

谁能帮忙?

好吧,

原来我在踢自己的屁股......

我用我的@Inject成员引用具体类,但使用接口作为我@Provides。

将@Inject成员从类修改为接口修复了它。

最新更新