169 похожих чатов

Привет! Использую MVVM, наследуюя VM от ViewModel. Для инжекта VM во

фрагменты использую вот такую структуру
@Qualifier
@MustBeDocumented
@Retention(AnnotationRetention.SOURCE)
@Target(AnnotationTarget.FIELD, AnnotationTarget.FUNCTION)
annotation class ViewModelInjection

и вот такие провайдеры
@Suppress("UNCHECKED_CAST")
val factory = object : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>) = lazyViewModel.get() as T
}

inline fun <reified V : ViewModel, reified F : Fragment> provide(fragment: F) =
ViewModelProvider(fragment, factory).get(V::class.java)

Споткнулся о кейс, когда мне для нескольких одновременно живущих фрагментов нужна одна и та же VM, при этом, она должна быть Singleton.

Суть в том, чтобы создать Общую ВМ для общения между фрагментами.

Для DI используется Dagger2
Есть какие-нибудь рекомендаци?

3 ответов

19 просмотров

Ну обычно если указать одну и туже активность, то будет возвращаться один и тот же ViewModel. viewModel = ViewModelProvider(requireActivity(), viewModelFactory).get(MapNewTwoViewModel::class.java) Как с DI не знаю

Павел- Автор вопроса

Окей, но как мне потом ВМке вкинуть зависимости в конструктор?

в моем случае этим занимается ViewModelFactory

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта