ViewModelProviders 在 2.2.0 中被弃用

ViewModelProviders is deprecated in 2.2.0

目前我将 androidx.lifecycle:lifecycle-extensions 版本从 2.2.0-alpha01 更新到 2.2.0,它表明 ViewModelProviders 已被弃用。那么在 kotlin 中使用 ViewModelProviders 的替代方法是什么?

正如 documentation, you can now simply use the ViewModelProvider constructors directly. It should be mostly a matter of changing ViewModelProviders.of( to ViewModelProvider(, but you can see the complete listing of exactly which new methods correspond to which old ones in the documentation 中所说。

在 Kotlin 中,您还可以在 Activity/Fragment 中使用 by viewModels() 属性 委托来获取单个 ViewModel。例如:

val model: MyViewModel by viewModels()

例如,如果您使用的是旧版本。

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 link

MyViewModel myViewModel = new ViewModelProvider(getViewModelStore(), viewModelFactory).get(MyViewModel.class);

older version

var viewModel = ViewModelProviders.of(this).get(BaseViewModel::class.java)

Now alternative

In java

viewModel = ViewModelProvider(this).get(BaseViewModel.class);

In kotlin

var  viewModel = ViewModelProvider(this).get(BaseViewModel::class.java)

参考文献 - https://developer.android.com/reference/androidx/lifecycle/ViewModelProviders