匕首在踢我的屁股。
我有以下布局。
注入对象图的主活动。
mainActivity@注入mainPresenter接口。这是通过返回具体实现的main模块提供的。
具体的mainPresenter实现采用fileContentInteractior接口。这是在interactiormodule中提供的,它返回一个具体的filecontentinteractior实现。
mainmodule可以这样做,因为它包含interactiormodule.class
到现在为止一切都很好。从这一点开始,它变得棘手。
具体的FileContentInteractior实现使用@Inject注入一些成员变量。这些成员变量都是通过各自模块提供具体实现的接口。
例如@inject threadexecutor threadexecutor。我想这是因为;
interactiormodule包含executormodule.class。
executormodule.class@以taasexecutor对象的形式提供了threadexecutor的具体实现。
taskexecutor对象没有注入的依赖项。
当我运行我的应用程序并且mainActivity打开时,会发生以下情况:
mainActivity调用mainPresenter实现的方法-工作正常!
MainPresenter有一个FileContentInteractior实现,并在其上调用一个方法-works
FileContentInteractior实现中的方法尝试调用ThreadExecutor实现中的方法(该方法作为成员变量@injected)。此操作失败,因为@injected threadexecutor实现为空。
有人能帮忙吗?
最佳答案
好吧,原来我是在踢自己的屁股…
我用@inject成员引用了具体的类,但使用了@provides提供的接口。
将@inject成员从类修改为接口修复了它。
关于android - Android Dagger @Injects为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25910900/