Sud*_*han 6 kotlin android-viewmodel android-jetpack viewmodelproviders
目前我androidx.lifecycle:lifecycle-extensions
从2.2.0-alpha01
to更新版本2.2.0
,它显示 ViewModelProviders 已被弃用。那么在 kotlin 中使用ViewModelProviders的替代方法是什么?
小智 8
旧版本
var viewModel = ViewModelProviders.of(this).get(BaseViewModel::class.java)
Run Code Online (Sandbox Code Playgroud)
现在替代
在 Java 中
viewModel = ViewModelProvider(this).get(BaseViewModel.class);
Run Code Online (Sandbox Code Playgroud)
在科特林
var viewModel = ViewModelProvider(this).get(BaseViewModel::class.java)
Run Code Online (Sandbox Code Playgroud)
参考 - https://developer.android.com/reference/androidx/lifecycle/ViewModelProviders
例如,如果您使用的是旧版本。
MyViewModel myViewModel = new ViewModelProviders.of(this, new MyViewModelFactory(this.getApplication(), "Your string parameter")).get(MyViewModel.class);
Run Code Online (Sandbox Code Playgroud)
例如,对于最新版本
MyViewModel myViewModel = new ViewModelProvider(this, viewModelFactory).get(MyViewModel.class);
Run Code Online (Sandbox Code Playgroud)
或者,使用 ViewModelStore链接
MyViewModel myViewModel = new ViewModelProvider(getViewModelStore(), viewModelFactory).get(MyViewModel.class);
Run Code Online (Sandbox Code Playgroud)
正如文档中所说,您现在可以直接使用ViewModelProvider
构造函数。这应该主要是更改ViewModelProviders.of(
为ViewModelProvider(
,但您也可以在文档中看到哪些新方法与哪些旧方法对应的完整列表。
在科特林,你也可以用by viewModels()
你的财产范围内委托Activity
/Fragment
获得个人ViewModel
秒。例如:
val model: MyViewModel by viewModels()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4936 次 |
最近记录: |