2

我有一个ViewPager,我在其中显示PetFragment. 要创建 a 的新实例PetFragment,我调用PetFragment.newInstance(petId).

我想为每个单独的ViewModel实例petId。但ViewModelProvider.Factory#create()只接受 aClass<T>作为参数。我如何实现这一目标?

4

1 回答 1

5

看一下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 都有一个唯一的键来标识它应该显示的内容。

于 2018-02-09T18:24:42.577 回答