>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成员从类修改为接口修复了它。