Как иметь 2 экземпляра параметризованного sharedViewModel? - PullRequest
0 голосов
/ 06 февраля 2020
val viewModel: StuffViewModel by sharedViewModel { parametersOf(arguments.id) }

Теперь, когда у меня есть несколько экземпляров c одного и того же класса Fragment, как я могу иметь новый экземпляр для каждого из них? Я думал, что это то, что делает parametersOf(), но это не похоже на правду.

И да, это должно быть sharedViewModel из-за некоторой логики c, которая вызывает некоторые сложные манипуляции с фрагментами и модели представления привязаны к сервисам, и кажется, что лучше всего иметь общие экземпляры вместо того, чтобы создавать их заново и повторно привязывать сервис каждый раз.

Что я хочу:

/---------Activity---------\
|                          |
|     StuffViewModel(1)    |
|     StuffViewModel(2)    |
|                          |
| /---StuffFragment(1)---\ |
| |                      | |
| |  *StuffViewModel(1)  | |
| |                      | |
| \----------------------/ |
|                          |
| /---StuffFragment(2)---\ |
| |                      | |
| |  *StuffViewModel(2)  | |
| |                      | |
| \----------------------/ |
|                          |
\--------------------------/

Что Я получаю:

/---------Activity---------\
|                          |
|     StuffViewModel(1)    |
|                          |
| /---StuffFragment(1)---\ |
| |                      | |
| |  *StuffViewModel(1)  | |
| |                      | |
| \----------------------/ |
|                          |
| /---StuffFragment(2)---\ |
| |                      | |
| |  *StuffViewModel(1)  | |
| |                      | |
| \----------------------/ |
|                          |
\--------------------------/

1 Ответ

0 голосов
/ 12 февраля 2020

Мы не нашли другого решения, чтобы иметь отдельные экземпляры ViewModel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...