我有一个ViewPager
,我在其中显示 PetFragment
的多个实例。创建 PetFragment
的新实例,我调用PetFragment.newInstance(petId)
.
我想要一个单独的ViewModel
每个 petId
的实例。但是 ViewModelProvider.Factory#create()
只需要 Class<T>
作为参数。我如何实现这一目标?
最佳答案
看看ViewModelProvider.get(@NonNull String key, @NonNull Class<T> modelClass)
,您应该能够为通过键存储的特定类拥有多个 ViewModel。
ViewModelProvider.get(@NonNull Class<T> modelClass)
只需使用默认键调用第一个方法。
get 调用与 ViewModelStore
交互这是 HashMap<String, ViewModel>
的包装器,这应该允许您存储各种 ViewModel
对于相同类型的 Fragment,只要每个 Fragment 都有一个唯一的键来标识它应该显示的内容。
关于android - 如何为 ViewPager 中的每个页面创建 ViewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48695438/