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
目前我将 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