我正在使用导航组件,我需要将数据从片段B传回片段A。我从here中读取了我需要使用SharedViewModel的信息。
例如,我有一个显示餐厅列表的RestaurantListFragment
。处理此片段的网络和业务逻辑,我将其设置为RestaurantListViewModel
。
我拥有的第二个片段是RestaurantDetailFragment
。并处理此片段中的一些操作和业务逻辑,我创建了RestaurantDetailViewModel
。
现在我需要将数据从RestaurantDetailFragment
传递回RestaurantListFragment
,据说我需要使用SharedViewModel。但现在我很困惑。
如果我使用SharedViewModel传递数据,那么我将在一个片段中有2个viewModel?在RestaurantDetailFragment
中,我将具有RestaurantDetailViewModel
和XSharedViewModel
,在RestaurantDetailFragment
中,我将具有RestaurantListViewModel
和XSharedViewModel
?
因此在SharedViewModel中,它仅包含需要传递回前一片段的数据?
或者我只需要制作一个可以容纳我的两个片段的viewmodel(SharedViewModel)? (我不再需要创建RestaurantDetailViewModel
和RestaurantListViewModel
)我很困惑。
我正在使用导航组件,我需要将数据从片段B传回片段A。我从这里读到,我需要使用SharedViewModel。例如说我有一个...
您只需创建一个视图模型即可在两个片段之间共享或重用数据。 SharedViewModel背后的概念是,它将创建一个对象并将结果存储在View Model的LiveData中,并将在与其关联的一个活动生命周期内的不同片段处再次使用。
两种方法都起作用: