如果使用SharedViewModel传递数据,我必须在片段中使用多少个视图模型?

问题描述 投票:1回答:2

我正在使用导航组件,我需要将数据从片段B传回片段A。我从here中读取了我需要使用SharedViewModel的信息。

例如,我有一个显示餐厅列表的RestaurantListFragment。处理此片段的网络和业务逻辑,我将其设置为RestaurantListViewModel

我拥有的第二个片段是RestaurantDetailFragment。并处理此片段中的一些操作和业务逻辑,我创建了RestaurantDetailViewModel

现在我需要将数据从RestaurantDetailFragment传递回RestaurantListFragment,据说我需要使用SharedViewModel。但现在我很困惑。

如果我使用SharedViewModel传递数据,那么我将在一个片段中有2个viewModel?在RestaurantDetailFragment中,我将具有RestaurantDetailViewModelXSharedViewModel,在RestaurantDetailFragment中,我将具有RestaurantListViewModelXSharedViewModel

因此在SharedViewModel中,它仅包含需要传递回前一片段的数据?

或者我只需要制作一个可以容纳我的两个片段的viewmodel(SharedViewModel)? (我不再需要创建RestaurantDetailViewModelRestaurantListViewModel)我很困惑。

我正在使用导航组件,我需要将数据从片段B传回片段A。我从这里读到,我需要使用SharedViewModel。例如说我有一个...

android android-architecture-components android-viewmodel android-architecture-navigation android-jetpack-navigation
2个回答
0
投票

您只需创建一个视图模型即可在两个片段之间共享或重用数据。 SharedViewModel背后的概念是,它将创建一个对象并将结果存储在View Model的LiveData中,并将在与其关联的一个活动生命周期内的不同片段处再次使用。


0
投票

两种方法都起作用:

© www.soinside.com 2019 - 2024. All rights reserved.