Size: a a a

2020 April 10

АЕ

Алексей Ершов in Dagger 2
Андрей Владиславов
Добрый день
Хотелось бы попросить совета. Пишу учебный проект, посоветовали использовать Room как базу данных. Нашел пример, как её использовать с Dagger, однако с этим инструментом ни разу не сталкивался до этого. Как правильно создавать поле презентера в классе активити, если в презентере присутствует конструктор, как в коде (есть риск, что некоторые термины неправильно использую, заранее извиняюсь 😅)
Или лучше отойти от даггера и писать проект без него?
https://pastebin.com/RCF1z4Uv
Вы сначала сами решите, хотите даггер сейчас изучать, или нет) Стандартный самый простой подход - это в активити в onCreate сделать component.inject(this) или просто достать экземпляр презентера из компонента. У вас презентер под интерфейсом, поэтому его еще в модуле нужно будет сделать @Binds.
И зачем вам там @InternalCoroutinesApi?
источник

АВ

Андрей Владиславов in Dagger 2
Алексей Ершов
Вы сначала сами решите, хотите даггер сейчас изучать, или нет) Стандартный самый простой подход - это в активити в onCreate сделать component.inject(this) или просто достать экземпляр презентера из компонента. У вас презентер под интерфейсом, поэтому его еще в модуле нужно будет сделать @Binds.
И зачем вам там @InternalCoroutinesApi?
Ну, думаю, рано или поздно все равно придется использовать даггер, так что лучше сейчас постараюсь разобраться
По поводу вопроса, просто лишний импорт сделал в классе базы данных и не придал этому значения, студия попросила добавить аннотацию, сейчас исправил

Спасибо за помощь
источник

АЕ

Алексей Ершов in Dagger 2
Андрей Владиславов
Ну, думаю, рано или поздно все равно придется использовать даггер, так что лучше сейчас постараюсь разобраться
По поводу вопроса, просто лишний импорт сделал в классе базы данных и не придал этому значения, студия попросила добавить аннотацию, сейчас исправил

Спасибо за помощь
в описании чата много хороших статей, для начала самое оно.
источник

АВ

Андрей Владиславов in Dagger 2
Ок, изучу. Спасибо
источник
2020 April 11

AK

Aleksey Kuzmenko in Dagger 2
Ребята, разбиваю приложение на модули. Использую даггер 2 для предоставления зависимостей для конкретного модуля.
Пишу модуль репозитория (типо data модуль). Этот data модуль предоставляет интерфейс репозитория, который потом будет инжектиться в интеракторы, что в других модулях. В данной реализации я хочу предоставлять IPasswordsRepository<PasswordRepoEntity> (т.е. интерфейс с дженериком).
Но сбилдить не получается. такой вот error:
@Binds methods must have only one parameter whose type is assignable to the return type
источник

AK

Aleksey Kuzmenko in Dagger 2
источник

AK

Aleksey Kuzmenko in Dagger 2
Как можно такое запровайдить даггером или как можно обойти или что-то почитать по этому поводу. Буду признателен, спасибо
источник

IG

Ilya Gulya in Dagger 2
А имплементация у тебя этот интерфейс реализует, да?
источник

AK

Aleksey Kuzmenko in Dagger 2
Ilya Gulya
А имплементация у тебя этот интерфейс реализует, да?
ес. PasswordRepoEntity тоже интерфейс. имплементация реализует со своим конкретным объектом. Типо PasswordDBEntity
источник

IG

Ilya Gulya in Dagger 2
Попробуй добавить аннотацию @JvmSuppressWildcards вот так:
fun provide(...): IPasswordRepository<@JvmSuppressWildcards PasswordRepoEntity>
источник

IG

Ilya Gulya in Dagger 2
Aleksey Kuzmenko
ес. PasswordRepoEntity тоже интерфейс. имплементация реализует со своим конкретным объектом. Типо PasswordDBEntity
А, стоп. Я понял.
источник

IG

Ilya Gulya in Dagger 2
Скорее всего у тебя что-то с дженериками значит
источник

IG

Ilya Gulya in Dagger 2
Покажи твой интерфейс, который ты пытаешься запровайдить
источник

IG

Ilya Gulya in Dagger 2
Вообще, лучше сразу закидывать в какой-нибудь gist весь код который поможет разобраться  в твоём случае
источник

AK

Aleksey Kuzmenko in Dagger 2
Ilya Gulya
Вообще, лучше сразу закидывать в какой-нибудь gist весь код который поможет разобраться  в твоём случае
сейчас сделаем
источник

AK

Aleksey Kuzmenko in Dagger 2
Ilya Gulya
Вообще, лучше сразу закидывать в какой-нибудь gist весь код который поможет разобраться  в твоём случае
источник

AK

Aleksey Kuzmenko in Dagger 2
пытаюсь просто сделать таким образом, чтобы те, кто забирает data module работали только лишь с интерфейсами
источник

IG

Ilya Gulya in Dagger 2
Aleksey Kuzmenko
пытаюсь просто сделать таким образом, чтобы те, кто забирает data module работали только лишь с интерфейсами
На всякий случай попробуй пока что поставить @JvmSuppressWildcards перед дженериком везде где ты интерфейс этот юзаешь
источник

AK

Aleksey Kuzmenko in Dagger 2
хорошо, я попробую. Спасибо)
источник

AK

Aleksey Kuzmenko in Dagger 2
Ilya Gulya
На всякий случай попробуй пока что поставить @JvmSuppressWildcards перед дженериком везде где ты интерфейс этот юзаешь
не, такая же ошибка
источник