gpt4 book ai didi

Android Dagger @Injects 为空

转载 作者:太空狗 更新时间:2023-10-29 15:26:38 25 4
gpt4 key购买 nike

Dagger 在踢我的屁股。

我有以下布局。

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

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

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

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

  • InteractorModule 包含 ExecutorModule.class。
  • ExecutorModule.class @以 TaasExecutor 对象的形式提供 ThreadExecutor 的具体实现。
  • TaskExecutor 对象没有注入(inject)依赖项。

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

  • MainActivity 调用 MainPresenter 实现的方法 - 工作正常!
  • MainPresenter 有一个 FileContentInteractor 实现并在其上调用一个方法 - 有效
  • FileContentInteractor 实现中的方法尝试调用 ThreadExecutor 实现中的方法(@Injected 作为成员变量)。这失败了,因为 @Injected ThreadExecutor 实现为空。

有人能帮忙吗?

最佳答案

好吧,事实证明我在踢自己的屁股......

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

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

关于Android Dagger @Injects 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25910900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com