在我当前的项目中,我使用下一行:
mViewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
例如一个ViewModel
but in https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders.html#ViewModelProviders() https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders.html#ViewModelProviders()推荐使用ViewModelProvider.AndroidViewModelFactory
因为ViewModelProviders()
在 API 级别 1.1.0 中已弃用。
为此目的有什么想法吗?
如果您有一个扩展 AndroidViewModel 的简单 ViewModel没有任何附加构造函数参数,如下
- 无需任何额外的构造函数即可扩展 AndroidViewModel
参数
class FooViewModel(application: Application) : AndroidViewModel(application) {}
- 在活动中创建视图模型
val viewModel = ViewModelProvider(this).get(FooViewModel::class.java)
但是如果你有一个扩展 AndroidViewModel 的 ViewModelwith any附加构造函数参数,如下
- 使用任何附加构造函数扩展 AndroidViewModel
参数
class FooViewModel(application: Application, foo: Foo) : AndroidViewModel(application) {}
- 创建一个扩展 ViewModelProvider.AndroidViewModelFactory 的新视图模型工厂
class FooViewModelFactory(val application: Application, val foo: Foo): ViewModelProvider.AndroidViewModelFactory(application) {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return FooViewModel(
application, foo
) as T
}
}
- 在活动中创建视图模型
val viewModel = ViewModelProvider(this, FooViewModelFactory(application, foo)).get(FooViewModel::class.java)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)