Size: a a a

2020 September 30

NG

Nikita Gusarov in Dagger 2
Andrey Akimov
я задал этот вопрос, как раз для того, чтобы узнать, как делать правильно, что за негатив(
Не, никакого негатива. Если пет или просто научиться - делай что угодно и как угодно, руку набьешь и заодно поймешь стоит ли оно того или нет
источник

IG

Ilya Gulya in Dagger 2
Nikita Gusarov
Доп издержки в виде ресурсов на поддержу оверинжинеринга тоже стоит учитывать.
Правильный DI это не оверинжиниринг)
источник

AC

Anatoly Chernyshev in Dagger 2
Всем привет, у меня есть абстрактный класс и 3 его реализации, в разные места нужно заинжектить разные реализации соотв. В модуле есть 3 метода с провайд аннотацией, которые возвращают один тип, но разные реализации. Я подумал, что проблему с инжектом можно решить через qualifiers, но мне пишет, что нет провайд метода для данного типа. Может кто знает, в чем может быть проблема? Заранее благодарен.
источник

IG

Ilya Gulya in Dagger 2
Anatoly Chernyshev
Всем привет, у меня есть абстрактный класс и 3 его реализации, в разные места нужно заинжектить разные реализации соотв. В модуле есть 3 метода с провайд аннотацией, которые возвращают один тип, но разные реализации. Я подумал, что проблему с инжектом можно решить через qualifiers, но мне пишет, что нет провайд метода для данного типа. Может кто знает, в чем может быть проблема? Заранее благодарен.
Хорошо бы код увидеть
источник

AC

Anatoly Chernyshev in Dagger 2
Сейчас накидаю в гист
источник

DS

Dzmitry Sobolevsky in Dagger 2
Anatoly Chernyshev
Всем привет, у меня есть абстрактный класс и 3 его реализации, в разные места нужно заинжектить разные реализации соотв. В модуле есть 3 метода с провайд аннотацией, которые возвращают один тип, но разные реализации. Я подумал, что проблему с инжектом можно решить через qualifiers, но мне пишет, что нет провайд метода для данного типа. Может кто знает, в чем может быть проблема? Заранее благодарен.
Вы @Named используете? аннотацией пометили параметры в местах куда зависимость передается?
источник

AC

Anatoly Chernyshev in Dagger 2
источник

DF

Damir Fazullin in Dagger 2
@aa_chernyshev вам нужно ознакомиться с темой Qualifier
источник

AC

Anatoly Chernyshev in Dagger 2
ну я о них поверхностно слышал и подумал, что подойдет здесь, но я не уверен в этом, других решений не пришло в голову
источник

DF

Damir Fazullin in Dagger 2
Тебе нужно в модуле создать инициализацию интерфейсов
источник

DF

Damir Fazullin in Dagger 2
Там на каждую необходимо навешать @Named("Какое-то уникальное имя")  аннатацию.

И в вашем другом классе. где вы вызываете Inject у даггер на ваш интерфейс, его тоже оберните @Named("") - с нужным вам ключем.
источник

AG

Artem Gilmudinov in Dagger 2
Выглядит ок. У вас над объявлением аннотации CreateAccountEmailConfirmation стоит @Qualifier?
источник

AC

Anatoly Chernyshev in Dagger 2
источник

AG

Artem Gilmudinov in Dagger 2
А можете текст ошибки сюда продублировать, пожалуйста?
источник

AC

Anatoly Chernyshev in Dagger 2
error: [Dagger/MissingBinding] ***.ui.confirmation.ConfirmationViewModel cannot be provided without an @Provides-annotated method.
public abstract interface FragmentComponent {
               ^
    ***.ui.confirmation.ConfirmationViewModel is injected at
         ***.ui.create_account_email_confirmation.CreateAccountEmailConfirmationFragment.viewModel
     ***.ui.create_account_email_confirmation.CreateAccountEmailConfirmationFragment is injected at
         ***.di.component.FragmentComponent.inject(***.ui.create_account_email_confirmation.CreateAccountEmailConfirmationFragment)
 It is also requested at:
     ***.ui.create_account_phone_confirmation.CreateAccountPhoneConfirmationFragment.viewModel
 The following other entry points also depend on it:
источник

AG

Artem Gilmudinov in Dagger 2
И попробуйте на крайний случаей retention Runtime сделать (хотя это кажется не должно помочь, но тем не менее).
источник

AC

Anatoly Chernyshev in Dagger 2
Runtime не помогло
источник

AG

Artem Gilmudinov in Dagger 2
В моем понимании тут все должно завестись.
А можете закомментить все места инджекта где стоят CreateAccount*Confirmation, и сделать в одном месте
@Inject
@CreateAccountPhoneConfirmation
lateinit var viewModel: ConfirmationViewModel
без override
источник

AC

Anatoly Chernyshev in Dagger 2
Artem Gilmudinov
В моем понимании тут все должно завестись.
А можете закомментить все места инджекта где стоят CreateAccount*Confirmation, и сделать в одном месте
@Inject
@CreateAccountPhoneConfirmation
lateinit var viewModel: ConfirmationViewModel
без override
т.е только одну просто оставить?
источник

AG

Artem Gilmudinov in Dagger 2
Почти. Закомменчиваем все @Inject где стоят ваши квалифаеры и добавляем в ваш фрагмент
@Inject
@CreateAccountPhoneConfirmation
lateinit var viewModelBlaBla: ConfirmationViewModel
источник