Size: a a a

Moxy – MVP библиотека под Android

2020 December 07

RG

Roman Gromov in Moxy – MVP библиотека под Android
Jorik Fat
мда.... короче пока про фрагменты детально все не изучу писать нет смысла
+
источник

VZ

Verta Zoom in Moxy – MVP библиотека под Android
Всем привет. Пытаюсь провайдить презентер в кастом вьюхе, MvpDelegate из фрагмента передается в конструкторе, в вьюхе реализован MvpDelegateHolder.
getMvpDelegate выглядит следующим образом
override fun getMvpDelegate(): MvpDelegate<CustomLookup> {
  if (mMvpDelegate != null) {
      return mMvpDelegate as MvpDelegate<CustomLookup>
  }
  mMvpDelegate = MvpDelegate(this)
  mMvpDelegate?.setParentDelegate(parentDelegate, data.id.toString())
  return mMvpDelegate as MvpDelegate<CustomLookup>
}
Inject выглядит так
@InjectPresenter
lateinit var presenter: LookupElementPresenter
@Inject
lateinit var presenterProvider: Provider<LookupElementPresenter>
@ProvidePresenter
fun providePresenter(): LookupElementPresenter {
   return presenterProvider.get()
}

При запуске получаю ошибку lateinit property presenterProvider has not been initialized. Подскажите что делаю не так и в какую сторону копать?
источник

P

Pavel in Moxy – MVP библиотека под Android
Выглядит так, что забыли позвать inject(this) в классе, где находится presenterProvider
источник

VZ

Verta Zoom in Moxy – MVP библиотека под Android
Pavel
Выглядит так, что забыли позвать inject(this) в классе, где находится presenterProvider
presenterProvider находится в Custom View, насколько я понимаю отдельно вызывать inject(this) нет необходимости
источник

P

Pavel in Moxy – MVP библиотека под Android
Есть необходимость. Как иначе даггер зависимости проставит?
источник

VZ

Verta Zoom in Moxy – MVP библиотека под Android
Pavel
Есть необходимость. Как иначе даггер зависимости проставит?
https://github.com/Arello-Mobile/Moxy/wiki/CustomView-as-MvpView
тут просто не говорится об этом. Не подскажете для чего нужно вызывать inject(this)? Нужно создавать отдельный компонент?
источник

AS

Alex Suvorov in Moxy – MVP библиотека под Android
Verta Zoom
https://github.com/Arello-Mobile/Moxy/wiki/CustomView-as-MvpView
тут просто не говорится об этом. Не подскажете для чего нужно вызывать inject(this)? Нужно создавать отдельный компонент?
Актуальная версия:
https://github.com/moxy-community/Moxy
Неподдерживаемая версия:
https://github.com/Arello-Mobile/Moxy
источник

P

Pavel in Moxy – MVP библиотека под Android
В примере не проставляются дополнительные зависимости в кастомную view.
источник

VZ

Verta Zoom in Moxy – MVP библиотека под Android
Alex Suvorov
Актуальная версия:
https://github.com/moxy-community/Moxy
Неподдерживаемая версия:
https://github.com/Arello-Mobile/Moxy
https://github.com/moxy-community/Moxy/wiki/CustomView-as-MvpView
использую эту библиотеку, тут то же самое
источник

AS

Alex Suvorov in Moxy – MVP библиотека под Android
думаю лучше не ссылаться вообще на старую библиотеку, т.к. вероятны конфликты
источник

P

Pavel in Moxy – MVP библиотека под Android
В вашем случае - либо передавать нужные зависимости извне в какую-нить функцию инициализации кастомной View, либо в самой view в init {} позвать inject(this)
источник

P

Pavel in Moxy – MVP библиотека под Android
Verta Zoom
https://github.com/Arello-Mobile/Moxy/wiki/CustomView-as-MvpView
тут просто не говорится об этом. Не подскажете для чего нужно вызывать inject(this)? Нужно создавать отдельный компонент?
В простановке зависимостей нет никакой магии. Dagger выставляет их в вызове inject(this).
Компонент нужно использовать тот, где есть эти зависимости (непосредственно или через dependencies).
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
Verta Zoom
Всем привет. Пытаюсь провайдить презентер в кастом вьюхе, MvpDelegate из фрагмента передается в конструкторе, в вьюхе реализован MvpDelegateHolder.
getMvpDelegate выглядит следующим образом
override fun getMvpDelegate(): MvpDelegate<CustomLookup> {
  if (mMvpDelegate != null) {
      return mMvpDelegate as MvpDelegate<CustomLookup>
  }
  mMvpDelegate = MvpDelegate(this)
  mMvpDelegate?.setParentDelegate(parentDelegate, data.id.toString())
  return mMvpDelegate as MvpDelegate<CustomLookup>
}
Inject выглядит так
@InjectPresenter
lateinit var presenter: LookupElementPresenter
@Inject
lateinit var presenterProvider: Provider<LookupElementPresenter>
@ProvidePresenter
fun providePresenter(): LookupElementPresenter {
   return presenterProvider.get()
}

При запуске получаю ошибку lateinit property presenterProvider has not been initialized. Подскажите что делаю не так и в какую сторону копать?
У вас кастомная вью требует зависимости из даггера? Если да, то эту вью нужно вручную заинжектить, в мокси это не описано потому что это делается согласно тому DI фреймворку, который вы используете. Другой вариант - передать все зависимости руками этой вьюхе, и вообще отвязаться в ней от DI
источник

VZ

Verta Zoom in Moxy – MVP библиотека под Android
Понял, спасибо за разъяснения
источник

P

Pavel in Moxy – MVP библиотека под Android
Второй вариант скорее правильнее, чтобы View была как можно более примитивной и не зависела от DI.
источник

I

Illya in Moxy – MVP библиотека под Android
привет, не подскажете как прокинуть данные из интента в конструктор презентера, пока не пойму как это сделать без providePresenter
kotlin moxy dagger2
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
Вдруг это вью типа фрагмента, умная)
источник

P

Pavel in Moxy – MVP библиотека под Android
Попробуй AssistedInject
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
Illya
привет, не подскажете как прокинуть данные из интента в конструктор презентера, пока не пойму как это сделать без providePresenter
kotlin moxy dagger2
Дык для этого и нужен провайд презентер, чтобы прокидывать аргументы)
источник

АЕ

Алексей Ершов... in Moxy – MVP библиотека под Android
С ассистом удобнее всего, да
источник