Android viewModel и Kotlin: с кем делятся данные viewModel? - PullRequest
0 голосов
/ 24 мая 2018

Я изучил класс viewModel и сделал простой тест, чтобы понять теорию (новичок).Я искал другие источники, и я не уверен, с кем делятся данные из этой модели представления.Простой класс viewModel был создан с одним свойством:

class MyViewModel: ViewModel() {
    var result: Int? = null
}

Было установлено значение viewModel из двух мест:

root Activity

val model = ViewModelProviders.of(this).get(MyViewModel::class.java)
model.result = 6

Фрагмент A:

val model = ViewModelProviders.of(activity).get(MyViewModel::class.java)
model.result = 9

При доступе к свойству из действия, Я вижу 6 .Когда к нему обращается фрагмент B (оба фрагмента являются дочерними элементами одного и того же действия), я вижу 9 .Вот так?ViewModel, используемый Activity, виден только для другой Activity?Или если viewModel используется одним фрагментом, то он виден только для других фрагментов?Если да, чтобы видеть друг друга, нужно ли мне использовать что-то вроде связки, аргументов, намерений или что-то еще?Буду благодарен за помощь.

1 Ответ

0 голосов
/ 27 мая 2018

Модель представления, полученная с помощью ViewModelProviders.of(activity), доступна только для этого действия и его детей (фрагментов).Вы не можете совместно использовать ViewModel между несколькими действиями, если не создадите свой собственный класс ViewModelProvider.

Если вам нужно обмениваться данными между вашими действиями, вы должны следовать шаблону хранилища и сначала сохранять свои данные в хранилище (это связаноприложению, а не действиям) и извлекает данные из другого действия из этого хранилища.

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