Как воссоздать ViewModel
, созданный с параметрами, введенными через Factory
, после воссоздания экземпляра активности?
ViewModel
имеет такой конструктор:
class MyViewModel(
val model: MyModel,
val repository: MyRepository
) : ViewModel()
Я создаю его с помощью factory:
ViewModelProviders
.of(this, MyViewModelFactory(
model = MyModel()
repository = MyRepository()))
.get(MyViewModel::class.java)
Я пытался восстановить ViewModel
вот так, пока savedInstanceState
не равно null (активность воссоздается):
ViewModelProviders
.of(this)
.get(MyViewModel::class.java)
Это вызывает сбой, потому что no 0 arguments constructor
присутствует внутри класса MyViewModel
.
Что касается передачи factory каждый раз: Моя проблема заключается в том, что все, что я передаю как MyModel
в ViewModel
, и это происходит из действия Intent
, может измениться позже из-за взаимодействия с пользователем. Это будет означать, что при воссоздании MyModel
в намерении устаревает модель, которая уже хранится в ViewModel
и была изменена взаимодействием с пользователем.