我的团队刚刚开始将我们的应用程序转换为在 Android 中使用 ViewModels,需要一些帮助。我们的应用程序有一组显示在片段中的建筑物。您可以在列表中选择一个建筑物以查看有关该建筑物的详细信息片段。
我们正在尝试使用此处建议的方式(将 ViewModel 绑定到活动)在片段之间共享数据: https ://developer.android.com/topic/libraries/architecture/viewmodel#sharing
我们的 BuildingViewModel 具有建筑物的主列表和详细记录。BuildingCollectionFragment 在 masterList 上有一个观察者,而 BuildingDetailFragment 在 detail 对象上有一个观察者。
我们遇到的问题是建筑物可以在 DetailFragment 上有相关的建筑物,您可以导航到这些建筑物。当您在相关建筑物的详细列表中选择建筑物时,我们在过渡到新的 BuildingDetailFragment 之前调用以下代码
buildingViewModel.detailObject.value = item!!.building
这效果很好!
问题
问题是当我们按下返回按钮时,仍然绑定到活动的 ViewModel 仍然认为我们在按下返回按钮之前正在查看的建筑物仍然处于活动状态。我们希望只使用现有列表,而不必返回并从 API 获取数据