android中viewmodel实例
时间: 2024-05-11 10:20:19 浏览: 7
在 Android 中,ViewModel 实例可以通过 ViewModelProvider 类来获取。常见的获取方式如下:
1. 在 Activity 或 Fragment 中获取:
```
ViewModelProvider(this).get(MyViewModel::class.java)
```
2. 在 Fragment 中获取共享的 ViewModel:
```
ViewModelProvider(requireActivity()).get(MySharedViewModel::class.java)
```
3. 在 ViewModel 中获取其他 ViewModel:
```
val otherViewModel = ViewModelProvider(viewModelStore, MyViewModelFactory(argument)).get(OtherViewModel::class.java)
```
在获取 ViewModel 实例的时候,需要传入一个 ViewModelProvider.Factory 对象。这个对象用来创建 ViewModel 实例。如果需要对 ViewModel 进行参数传递,可以通过自定义 Factory 来实现。例如,创建一个需要传入参数的 ViewModel:
```
class MyViewModel(val arg1: String, val arg2: Int) : ViewModel() {
// TODO: Implement the ViewModel
}
class MyViewModelFactory(private val arg1: String, private val arg2: Int) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return MyViewModel(arg1, arg2) as T
}
}
```
然后在获取 ViewModel 的时候,传入对应的 Factory 对象即可:
```
val myViewModel = ViewModelProvider(this, MyViewModelFactory("hello", 123)).get(MyViewModel::class.java)
```