Android ';ViewModelProviders';不推荐使用。Java解决方案?

Android ';ViewModelProviders';不推荐使用。Java解决方案?,android,viewmodel,viewmodelproviders,Android,Viewmodel,Viewmodelproviders,androidx中不推荐使用“ViewModelProviders”。生命周期:生命周期-*:2.2.0-alpha03 这是Kotlin的解决方案 但它的Java版本是什么? ViewModelProvider(this.get)(MyViewModel.class)不适用于Java。ViewModelProviders.of(this.get)(MyViewModel.class);-不赞成 新建ViewModelProvider(this.get(MyViewModel.class);-正

androidx中不推荐使用“ViewModelProviders”。生命周期:生命周期-*:2.2.0-alpha03 这是Kotlin的解决方案 但它的Java版本是什么? ViewModelProvider(this.get)(MyViewModel.class)不适用于Java。

ViewModelProviders.of(this.get)(MyViewModel.class);-不赞成

新建ViewModelProvider(this.get(MyViewModel.class);-正确的


谢谢@EpicPandaForce

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

ViewModelProviders.of(this, ViewModelFactoryObject).get(ViewModel::class.java).apply{}
通用示例(最多到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)

或者,使用ViewModelStore


出于某种原因,他们将其替换为新的ViewModelProvider(此)。Tbh之前的变体更好,但这是他们的libYes,这是正确的。谢谢你,伙计。
MyViewModel myViewModel = new ViewModelProvider(this, viewModelFactory).get(MyViewModel.class);
MyViewModel myViewModel = new ViewModelProvider(getViewModelStore(), viewModelFactory).get(MyViewModel.class);