Моя команда только начинает переводить наше приложение на использование 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.