众所周知,ViewModelProviders
已被弃用,我试图删除移至ViewModelProvider
的已弃用代码。
因此,基本上,我在活动上附加了一个ViewModel(无自变量),所有片段都针对应用状态访问相同的实例。
我想在活动/片段中知道如何获取附加到活动的ViewModel实例。
val weatherViewModelFactory = WeatherViewModelFactory()
val viewModel = ViewModelProvider(viewModelStore, weatherViewModelFactory).get(WeatherViewModel::class.java)
val weatherViewModelFactory = WeatherViewModelFactory()
val viewModel = ViewModelProvider(activity!!.viewModelStore, weatherViewModelFactory).get(WeatherViewModel::class.java)
//use less in my case
class WeatherViewModelFactory : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return modelClass.getConstructor().newInstance()
}
}
implementation "androidx.lifecycle:lifecycle-extensions:2.1.0"
您必须注意到的主要问题是,即使我必须为该片段获取实例,我也不得不每次都创建WeatherViewModelFactory
。
我注意到,他们在androidx.lifecycle:lifecycle-extensions:2.2.0-rc02
中引入了一个构造函数。
public ViewModelProvider(@NonNull ViewModelStoreOwner owner) {
哪个可以解决我的问题,但我不想转到那个版本。我肯定在2.1.0
中缺少了一些内容