不推荐使用“ ViewModelProviders”。 Java解决方案?

时间:2019-12-06 20:28:09

标签: android viewmodel viewmodelproviders

从androidx.lifecycle:lifecycle-*:2.2.0-alpha03不推荐使用'ViewModelProviders' https://developer.android.com/jetpack/androidx/releases/lifecycle#2.2.0-alpha03 这是Kotlin的解决方案 'ViewModelProviders' is deprecated. After upgrading lifecycle-extensions:2.1.0 to 2.2.0-alpha05 但是,Java的版本是什么? ViewModelProvider(this).get(MyViewModel.class)不适用于Java。

3 个答案:

答案 0 :(得分:1)

ViewModelProviders.of(this).get(MyViewModel.class); -已弃用

new ViewModelProvider(this).get(MyViewModel.class); -正确

感谢@EpicPandaForce!

答案 1 :(得分:1)

通用示例(最多android.arch.lifecycle:extensions:1.1.0)。自1.1.1起已弃用,

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

通用示例(适用于android.arch.lifecycle:extensions:1.1.1)

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

或者,使用ViewModelStore link

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

答案 2 :(得分:0)

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

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