Я пытаюсь использовать ViewModel
, чтобы сохранить данные для обмена между Fragments
. Вот и все:
class AnimalViewModel : ViewModel() {
private var data = MutableLiveData<AnimalWithHints>()
fun setData(animalData: AnimalWithHints) {
data.value = animalData
Timber.e("Saved?")
}
fun getData(): LiveData<AnimalWithHints> {
if (data.value == null) {
Timber.e("Null?")
data.value = AnimalWithHints()
}
return data
}
}
Итак, я заполнил ненулевой объект (проверил его) и пишу перед транзакцией:
ViewModelProviders.of(this).get(AnimalViewModel::class.java).setData(animalWithHints)
Я вижу "Сохранено?" когда это произойдет, поэтому я думаю, что сохранить работает хорошо. Я зарегистрировал какое-то поле AnimalWithHints
и увидел, что оно правильное.
Затем я пытаюсь получить свой объект:
val animalWithHints = ViewModelProviders.of(this).get(AnimalViewModel::class.java).getData().value
И я вижу «Ноль?» . И это правда, data.value
является новым пустым AnimalWithHints
объектом.
Странно, у меня есть только две строки кода, используя ViewModel
. Я только сохраняю и получаю объект, нет места, когда я могу его очистить или модифицировать.
Мне нужна ваша помощь, чтобы понять, что не так.