Кинжал надирает мне задницу.
У меня следующая схема.
- MainActivity, который вводится в граф объекта.
- MainActivity @Injects интерфейс MainPresenter. Это предоставляется через MainModule, который возвращает конкретную реализацию.
- Конкретная реализация MainPresenter использует интерфейс FileContentInteractor. Это предоставляется в InteractorModule, который возвращает конкретную реализацию FileContentInteractor.
- MainModule может сделать это, потому что он включает InteractorModule.class
До сих пор все отлично. С этого момента становится все сложнее.
Конкретная реализация FileContentInteractor вводит некоторые переменные-члены с помощью @Inject. Эти переменные-члены представляют собой все интерфейсы, которым предоставляются конкретные реализации через соответствующие модули.
Примером является @Inject ThreadExecutor threadExecutor. Я думал, что это будет предусмотрено, потому что;
- InteractorModule включает ExecutorModule.class.
- ExecutorModule.class @Предоставляет конкретную реализацию ThreadExecutor в форме объекта TaasExecutor.
- Объект TaskExecutor не имеет внедренных зависимостей.
Когда я запускаю свое приложение и открывается MainActivity, происходит следующее:
- MainActivity вызывает метод реализации MainPresenter - отлично работает!
- MainPresenter имеет реализацию FileContentInteractor и вызывает для него метод - работает
- Метод в реализации FileContentInteractor пытается вызвать метод в реализации ThreadExecutor (который @Injected является переменной-членом). Это не удалось, поскольку реализация @Injected ThreadExecutor имеет значение null.
Кто-нибудь может помочь?