[英]ViewModelProviders is deprecated in 2.2.0
目前我將androidx.lifecycle:lifecycle-extensions
版本從2.2.0-alpha01
到2.2.0
,它顯示 ViewModelProviders 已棄用。 那么在 kotlin 中使用ViewModelProviders的替代方法是什么?
舊版本
var viewModel = ViewModelProviders.of(this).get(BaseViewModel::class.java)
現在替代
在 Java 中
viewModel = ViewModelProvider(this).get(BaseViewModel.class);
在科特林
var viewModel = ViewModelProvider(this).get(BaseViewModel::class.java)
參考 - https://developer.android.com/reference/androidx/lifecycle/ViewModelProviders
例如,如果您使用的是舊版本。
MyViewModel myViewModel = new ViewModelProviders.of(this, new MyViewModelFactory(this.getApplication(), "Your string parameter")).get(MyViewModel.class);
例如,對於最新版本
MyViewModel myViewModel = new ViewModelProvider(this, viewModelFactory).get(MyViewModel.class);
或者,使用 ViewModelStore 鏈接
MyViewModel myViewModel = new ViewModelProvider(getViewModelStore(), viewModelFactory).get(MyViewModel.class);
正如文檔中所說,您現在可以直接使用ViewModelProvider
構造函數。 這應該主要是將ViewModelProviders.of(
更改為ViewModelProvider(
,但您也可以在文檔中看到具體哪些新方法對應於哪些舊方法的完整列表。
在 Kotlin 中,您還可以在Activity
/ Fragment
使用by viewModels()
屬性委托來獲取單個ViewModel
。 例如:
val model: MyViewModel by viewModels()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.