Size: a a a

StartAndroid Ru Chat

2020 June 22

G

Ganny in StartAndroid Ru Chat
Если нужен костыль, можно попробовать везде где обращение к этой переменной идет, вызывать через Handler.post(), но тут не факт, что поможет
источник

A

Alexey in StartAndroid Ru Chat
Denis Gaponov
Всем привет. Подскажите, пожалуйста, в ситуации:
В активити есть lateinit переменная
Инциализируется она в viewmodel observe

остальной код ссылается на эту переменную, но это происходит быстрее, чем она успевает проинициализироваться
Как мне её подождать?
Кстати, у меня такая же проблема, вроде как я все в observe переместил, но точно щас не помнб
источник

М

Максим Вроде... in StartAndroid Ru Chat
Хуйня хуйня лол кек
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Denis Gaponov
Всем привет. Подскажите, пожалуйста, в ситуации:
В активити есть lateinit переменная
Инциализируется она в viewmodel observe

остальной код ссылается на эту переменную, но это происходит быстрее, чем она успевает проинициализироваться
Как мне её подождать?
Не использовать lateinit. Гдето давно вычитал про рекомендации вообще не использовать lateinit так как теряется преимущество null safety. Использую lazy inject через koin, но это все равно привязано к жизненному циклу фрагмента или активити, т.е. раньше чем super.onCreate обратиться к viemodel нельзя, что логично. Поэтому, как минимум, проверьте где вы достаете viewmodel и где используете. Не должно быть ее использования вне жизненного цикла View.
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Вы этот inject можете и руками написать без koin - почитайте про lazy. При этом переменная будет не nullable
источник

A

Alexey in StartAndroid Ru Chat
Vladyslav Lozytskyi
Не использовать lateinit. Гдето давно вычитал про рекомендации вообще не использовать lateinit так как теряется преимущество null safety. Использую lazy inject через koin, но это все равно привязано к жизненному циклу фрагмента или активити, т.е. раньше чем super.onCreate обратиться к viemodel нельзя, что логично. Поэтому, как минимум, проверьте где вы достаете viewmodel и где используете. Не должно быть ее использования вне жизненного цикла View.
Ну я например в onCreate и подписывался на него и всеравно не инициализирована была
источник

A

Alexey in StartAndroid Ru Chat
Alexey
Ну я например в onCreate и подписывался на него и всеравно не инициализирована была
Или в методе onMapReady, который вообще после onCreate срабатывает
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
А как вы эту переменную присваеваете ?
источник

A

Alexey in StartAndroid Ru Chat
Vladyslav Lozytskyi
А как вы эту переменную присваеваете ?
Viewmodel of providers
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Тоже в on create ?
источник

A

Alexey in StartAndroid Ru Chat
Vladyslav Lozytskyi
Тоже в on create ?
Щас гляну
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Alexey
Щас гляну
Кусок кода был бы кстати
источник

A

Alexey in StartAndroid Ru Chat
Vladyslav Lozytskyi
Кусок кода был бы кстати
ну вот так да работает, я уже не помню если честно, как я изначально хотел сделать, но вот это уже следствия, изначально не так было
источник

T

The The in StartAndroid Ru Chat
Vladyslav Lozytskyi
Не использовать lateinit. Гдето давно вычитал про рекомендации вообще не использовать lateinit так как теряется преимущество null safety. Использую lazy inject через koin, но это все равно привязано к жизненному циклу фрагмента или активити, т.е. раньше чем super.onCreate обратиться к viemodel нельзя, что логично. Поэтому, как минимум, проверьте где вы достаете viewmodel и где используете. Не должно быть ее использования вне жизненного цикла View.
я не самый большой спец в котлине, но если я правильно понимаю, lateinit - это не для того чтобы "я ее потом где-нибудь проинциализирую"
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Как минимум, viewmodel надо доставать сразу после super on create . При Вашей последовательности кода никто не гарантирует что onmap не отработает раньше, чем Вы проинициализируете viewmodel
источник

A

Alexey in StartAndroid Ru Chat
Vladyslav Lozytskyi
Как минимум, viewmodel надо доставать сразу после super on create . При Вашей последовательности кода никто не гарантирует что onmap не отработает раньше, чем Вы проинициализируете viewmodel
Мне map в observe нужна
источник

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
Alexey
Мне map в observe нужна
так используйте там ее на здоровье, я про метод onCreate говорил. getMapAsync вызывается раньше чем создается viewModel. Это и может быть Вашей проблемой. Перенесите viewModel = ... сразу после super.onCreate
источник

A

Alexey in StartAndroid Ru Chat
Vladyslav Lozytskyi
так используйте там ее на здоровье, я про метод onCreate говорил. getMapAsync вызывается раньше чем создается viewModel. Это и может быть Вашей проблемой. Перенесите viewModel = ... сразу после super.onCreate
Ок спасибо, может тогда скажите, как маркеры в цикле можно добавить не ui потоки? Пробовал с handler и rx, но всеравно он в главном делает это почему то
источник

DG

Denis Gaponov in StartAndroid Ru Chat
А как сделать livedata из данных двух livedata?
Есть livedata список + livedata число id, нужно сделать отдельным livedata элемент списка по его id
источник

J

J.S in StartAndroid Ru Chat
Denis Gaponov
А как сделать livedata из данных двух livedata?
Есть livedata список + livedata число id, нужно сделать отдельным livedata элемент списка по его id
Странно , моделька тут не поможет нет ?
источник