从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。
答案 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{}