简体   繁体   中英

'ViewModelProviders' is deprecated. Java solution?

'ViewModelProviders' is deprecated from androidx.lifecycle:lifecycle-*:2.2.0-alpha03 https://developer.android.com/jetpack/androidx/releases/lifecycle#2.2.0-alpha03 Here is solution for Kotlin 'ViewModelProviders' is deprecated. After upgrading lifecycle-extensions:2.1.0 to 2.2.0-alpha05 But what is Java version of that? ViewModelProvider(this).get(MyViewModel.class) not work for Java.

ViewModelProviders.of(this).get(MyViewModel.class); - deprecated

new ViewModelProvider(this).get(MyViewModel.class); - correct

Thanks @EpicPandaForce !

Generic Example (up to android.arch.lifecycle:extensions:1.1.0). it is deprecated from 1.1.1,

MyViewModel myViewModel = new ViewModelProviders.of(this, new MyViewModelFactory(this.getApplication(), "Your string parameter")).get(MyViewModel.class);

Generic Example (for android.arch.lifecycle:extensions:1.1.1)

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

OR, Use ViewModelStore link

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

您还可以为您的 ViewModel 创建一个 CREATOR 对象,并从您的活动中调用这个对象,这个对象将作为一个工厂对象,您可以在调用任何 ViewModelFactory 时调用它。

ViewModelProviders.of(this, ViewModelFactoryObject).get(ViewModel::class.java).apply{}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM