Так что я использую Dagger 2 для приложения для Android, но позвольте мне попытаться объяснить мою проблему без терминологии Android.Кинжал 2 Один контроллер, в зависимости от двух компонентов с областью
Просто у меня есть один контроллер, который показывает интерфейс. Чтобы показать соответствующие значения с соответствующими единицами, этот контроллер должен зависеть от двух компонентов с областью, что невозможно.
Вот случай: у меня есть
- Один контроллер компонент, область действия с @Activity
- One Application Comonent, область действия с @Singleton
- Один DbComponent - компонент базы данных, область действия с @Application и зависит от ApplicationComponent.
- One PreferencesComponent - снова компонент, в котором используется @Application и зависит от ApplicationComponent.
ControllerComponent должно зависеть как DbComponent, так что мой контроллер может получить данные, которые будут показаны, а на PreferencesComponent, чтобы показать соответствующие единицы (по Цельсию, по Фаренгейту, м/с, км/ч и т.д).
Что было бы лучшим способом реализовать мой график?
Я видел вопросы, похожие на мои, но они не помогли - question 1, question 2
Большинство из этих "компонентов" должны быть модулями. Вот почему он не работает. Подробнее: http://stackoverflow.com/questions/40545075/dagger2-and-android/40546157#40546157 – EpicPandaForce
Вы говорите мне, чтобы следовать какой-то схеме «Один компонент за область» или что-то еще? Я думаю, что вопрос частично философский. Почему (например) DbComponent должен быть только модулем, в то время как что-то вроде сетевого компонента должно быть в отдельном comonent вместо простого модуля? – definera
Сетевой компонент также является одноточечным, не так ли? Тогда он должен быть модулем, частью одноэлементного компонента.Если вы видите этот ответ, «NetworkingComponent» был просто обычным «публичным интерфейсом» с использованием методов предоставления в нем, а не фактического компонента. – EpicPandaForce