简体   繁体   English

'ViewModelProviders' 已弃用。 升级生命周期扩展后:2.1.0 到 2.2.0-alpha05

[英]'ViewModelProviders' is deprecated. After upgrading lifecycle-extensions:2.1.0 to 2.2.0-alpha05

Android Studio -> New Project -> Choice "Tabbed Activity". Android Studio -> 新项目 -> 选择“选项卡式活动”。

After upgrading lifecycle-extensions from 2.1.0 to 2.2.0-alpha05 ViewModelProviders is deprecated.将生命周期扩展从 2.1.0 升级到 2.2.0-alpha05 后,不推荐使用 ViewModelProviders。 In simple cases it replaceable by "by viewModels()" for example:在简单的情况下,它可以替换为“by viewModels()”,例如:

plHlFrModel = ViewModelProviders.of(this).get(PlHlFrModel::class.java)

replaced by:取而代之:

private val plHlFrModel by viewModels<PlHlFrModel>()

But I can't figure out how to replace this one:但我不知道如何替换这个:

pageViewModel =  ViewModelProviders.of(this)
     .get(PageViewModel::class.java).apply {
         setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)
      }

where and how to place apply{} block in a "by viewModel" form?在哪里以及如何将 apply{} 块以“by viewModel”形式放置? Maybe there is another way?也许还有另一种方式?

ViewModelProviers is deperecated, we just use ViewModelProvider . ViewModelProviers已弃用,我们只使用ViewModelProvider

Direct access直接访问

pageViewModel = ViewModelProvider(this)
     .get(PageViewModel::class.java).apply {
         setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)
      }

using delegate使用委托

private val pageViewModel by viewModels<PageViewModel>()

//function scope
pageViewModel.setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)

Instead of using ViewModelProviders.of(this) use ViewModelProvider(This) new ViewModelProvider(this).get(Vm.class);而不是使用ViewModelProviders.of(this)使用ViewModelProvider(This) new ViewModelProvider(this).get(Vm.class); for java适用于 java

viewModel = ViewModelProviders.of(this).get(vm.class); // is deprecate

viewModel = new ViewModelProvider(this).get(vm.class); // is true
viewModel = new ViewModelProvider(this).get(vm.class);

This will work only with this dependency:这仅适用于此依赖项:

implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 LifecycleService 是否与生命周期扩展工件一起被弃用? - Is LifecycleService deprecated along with lifecycle-extensions artifact? 无法添加依赖:无法解决:androidx.lifecycle:lifecycle-extensions:2.2.0-rc2 - Unable to add dependency: Failed to resolve: androidx.lifecycle:lifecycle-extensions:2.2.0-rc2 不推荐使用“ViewModelProviders”。 Java解决方案? - 'ViewModelProviders' is deprecated. Java solution? 升级到gradle后无法编译项目:2.1.0-alpha5 - Project cannot be compiled after upgrading to gradle:2.1.0-alpha5 添加 androidx.room:room-compiler:2.1.0-alpha05 后项目未编译 - Project not compiling after adding androidx.room:room-compiler:2.1.0-alpha05 在android应用中-将Phonegap 2.1.0升级到2.2.0后,子浏览器无法正常工作 - In android application- child browser is not working after upgrading Phonegap 2.1.0 to 2.2.0 如果gradle中包含生命周期扩展,则kotlin-android-extensions停止工作 - kotlin-android-extensions stop working if lifecycle-extensions is included in gradle 如何在 JAVA 中弃用 ViewModelProviders 后实现 ViewModelProvider - How to implement ViewModelProvider after ViewModelProviders deprecated in JAVA ViewModelProviders 在 1.1.0 中已弃用 - ViewModelProviders is deprecated in 1.1.0 已弃用的 ViewModelProviders 的替代方案? - Alternative for deprecated ViewModelProviders?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM