我有一个ViewPager
,我在其中显示PetFragment
. 要创建 a 的新实例PetFragment
,我调用PetFragment.newInstance(petId)
.
我想为每个单独的ViewModel
实例petId
。但ViewModelProvider.Factory#create()
只接受 aClass<T>
作为参数。我如何实现这一目标?
我有一个ViewPager
,我在其中显示PetFragment
. 要创建 a 的新实例PetFragment
,我调用PetFragment.newInstance(petId)
.
我想为每个单独的ViewModel
实例petId
。但ViewModelProvider.Factory#create()
只接受 aClass<T>
作为参数。我如何实现这一目标?
看一下ViewModelProvider.get(@NonNull String key, @NonNull Class<T> modelClass)
,您应该能够为特定类存储多个 ViewModel 键。
ViewModelProvider.get(@NonNull Class<T> modelClass)
只需使用默认键调用第一个方法。
get 调用与之交互,ViewModelStore
它是 a 的包装器HashMap<String, ViewModel>
,它应该允许您ViewModel
为相同类型的 Fragment 存储各种 s,只要每个 s 都有一个唯一的键来标识它应该显示的内容。