[英]'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 。
pageViewModel = ViewModelProvider(this)
.get(PageViewModel::class.java).apply {
setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)
}
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.