Выбор ответа Middle ViewModel и сохранение состояния обновлено
Зачем нужна фабрика ViewModel
Вопрос
У ViewModel есть параметр конструктора repo: Repository. Что нужно, чтобы by viewModels() её создал?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Фабрика (viewModelFactory { }) или DI вроде @HiltViewModel. Стандартная фабрика умеет вызывать только конструктор без параметров (или с SavedStateHandle/Application).
Варианты ответа
- Ничего: провайдер передаст
null, а репозиторий подставится позже - Сделать параметр
lateinitи присвоить репозиторий после создания - Фабрика (
viewModelFactory { }) или DI вроде@HiltViewModelправильный ответ - Объявить ViewModel
abstract, и провайдер сгенерирует наследника
Разбор
Стандартная фабрика умеет вызывать только конструктор без параметров (или с SavedStateHandle/Application). Для своих параметров нужна своя фабрика либо Hilt/Koin, которые создают её автоматически. null в non-null параметр не передать, а lateinit к параметрам конструктора не применяется.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.