Size: a a a

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

2018 October 24

Rl

Roman lastName in Moxy – MVP библиотека под Android
источник

Rl

Roman lastName in Moxy – MVP библиотека под Android
@Inject убери. Оставь только injectPresenter. ProvidePresenter тебе нужен только если у тебя презентер с параметрами в конструкторе или если ты хочешь провайдить сам его из di. Метод помеченный providePresenter должен создать презентер, а Мокси когда надо вызовет этот метод
источник

Rl

Roman lastName in Moxy – MVP библиотека под Android
Алексей Федоров
Я на самом деле давно с этой траблой сталкиваюсь, уже в третьей работе. Самое интересное, что перепиши я активити/фрагмент на джаву, то все работает. И из-за этого у меня проект не полностью котлиновский выходит. Презентеры и вьюшки на котлине пишутся
Ничего не помогло?
источник

АФ

Алексей Федоров in Moxy – MVP библиотека под Android
Помогло! Совет поменять местами inject с onCreate
источник

Rl

Roman lastName in Moxy – MVP библиотека под Android
Алексей Федоров
Помогло! Совет поменять местами inject с onCreate
Не понятно. Как в итоге получилось?
источник

АФ

Алексей Федоров in Moxy – MVP библиотека под Android
Yuri Shmakov
super.onCreate(savedInstanceState)
       component?.inject(this)

вот это точно надо поменять местами
Вот это место
источник

Rl

Roman lastName in Moxy – MVP библиотека под Android
Алексей Федоров
Вот это место
А inject с презентера не убрал? Ты на других экранах используешь moxy?
источник

MM

Maxim Motorniy in Moxy – MVP библиотека под Android
Ну, вроде всегда ж даггером инжект делают до onCreate)
источник

АФ

Алексей Федоров in Moxy – MVP библиотека под Android
Roman lastName
А inject с презентера не убрал? Ты на других экранах используешь moxy?
Нет. Это так задумано. В доках на гите по мокси есть пример и обсуждение как совместить даггер и мокси
источник

ВБ

Влад Баженов in Moxy – MVP библиотека под Android
Maxim Motorniy
В нормальной ситуации при таком инжекте будет каждый раз создаваться презентер при создании вью. Он не будет аттачится к вью, но будет висеть в памяти
и как красиво это обойти?
источник

MM

Maxim Motorniy in Moxy – MVP библиотека под Android
Влад Баженов
и как красиво это обойти?
Красиво хз. Я использую Lazy для инициализации переменной, которую провайдит даггер
источник

АФ

Алексей Федоров in Moxy – MVP библиотека под Android
Maxim Motorniy
Красиво хз. Я использую Lazy для инициализации переменной, которую провайдит даггер
А можно будет пример глянуть как вы это делаете?
источник

MM

Maxim Motorniy in Moxy – MVP библиотека под Android
Алексей Федоров
А можно будет пример глянуть как вы это делаете?
добавил коммент : https://github.com/Arello-Mobile/Moxy/issues/100
источник

Rl

Roman lastName in Moxy – MVP библиотека под Android
Алексей Федоров
Нет. Это так задумано. В доках на гите по мокси есть пример и обсуждение как совместить даггер и мокси
Хм. Я тоже читал доку, но у меня по другому делалось. У тебя providePresenter вызывает moxy когда ему нужен презентер и moxy же его сохранит чтоб сделать injectPresenter сразу и потом пока активити не isFinishing. А ты инжектишь из даггера, потом Мокси берет из providePresenter и ещё раз сует в поле которое помечено injectPresenter
источник

MM

Maxim Motorniy in Moxy – MVP библиотека под Android
Я раньше использоватл так:
@Inject
@InjectPresenter
Presenter presenter;

@ProvidePresenter
Presenter providePresenter() {
   return presetner;
}

И заметил, что вполне закономерно, даггер инжектит каждый раз при создании вью новый объект презентера.
источник

Rl

Roman lastName in Moxy – MVP библиотека под Android
Maxim Motorniy
Я раньше использоватл так:
@Inject
@InjectPresenter
Presenter presenter;

@ProvidePresenter
Presenter providePresenter() {
   return presetner;
}

И заметил, что вполне закономерно, даггер инжектит каждый раз при создании вью новый объект презентера.
Конечно. Потому что вы вызывали inject в onCreate. В Вики написано как правильно это делать, только не юзайте Global presenter
источник

Rl

Roman lastName in Moxy – MVP библиотека под Android
Или вот мой вариант
источник

MM

Maxim Motorniy in Moxy – MVP библиотека под Android
Roman lastName
Конечно. Потому что вы вызывали inject в onCreate. В Вики написано как правильно это делать, только не юзайте Global presenter
А когда его вызывать?)
источник

Rl

Roman lastName in Moxy – MVP библиотека под Android
Maxim Motorniy
А когда его вызывать?)
В ProvidePresenter методе отдать из компонента. Moxy вызовет этот метод если у нее не будет презентера
источник

Rl

Roman lastName in Moxy – MVP библиотека под Android
Я инжекты в активити вообще никогда не делал. Это не нужно.
источник