Совместное использование Android ViewModel между фрагментами

Моя команда только начинает переводить наше приложение на использование ViewModels в Android, и мне нужна помощь. В нашем приложении есть коллекция зданий, отображаемых во фрагменте. Вы можете выбрать здание в списке, чтобы просмотреть подробную информацию об этом фрагменте здания.

Мы пытаемся обмениваться данными между фрагментами, используя предложенный здесь способ (привязывая ViewModel к активности): https://developer.android.com/topic/libraries/architecture/viewmodel#sharing

Наша модель BuildingViewModel имеет основной список зданий и подробную запись. BuildingCollectionFragment имеет наблюдателя в masterList, а BuildingDetailFragment имеет наблюдателя в объекте детали.

Проблема, с которой мы сталкиваемся, заключается в том, что у зданий могут быть связанные здания в DetailFragment, к которым вы можете перейти. Когда вы выбираете здание в подробном списке связанных зданий, мы вызываем следующий код перед переходом к новому BuildingDetailFragment.

buildingViewModel.detailObject.value = item!!.building

Это отлично работает!

Проблема

Проблема заключается в том, что когда мы нажимаем кнопку назад, ViewModel, которая все еще привязана к активности, все еще думает, что здание, на которое мы смотрели до нажатия кнопки «Назад», все еще активно. Мы хотели бы просто использовать существующий список, а не возвращаться и получать данные из API.


person ramsez    schedule 25.07.2018    source источник