Android Studio->新建项目->选择“标记的活动”。
将生命周期扩展从2.1.0升级到2.2.0-alpha05后,不建议使用ViewModelProviders。 在简单的情况下,它可以由“ by viewModels()”替换 例如:
plHlFrModel = ViewModelProviders.of(this).get(PlHlFrModel::class.java)
替换为:
private val plHlFrModel by viewModels<PlHlFrModel>()
但是我不知道该如何替换:
pageViewModel = ViewModelProviders.of(this)
.get(PageViewModel::class.java).apply {
setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)
}
以“ by viewModel”形式在哪里放置apply {}块? 也许还有另一种方法?
答案 0 :(得分:2)
而不是使用ViewModelProviders.of(this)
来为Java使用ViewModelProvider(This)
new ViewModelProvider(this).get(Vm.class);
答案 1 :(得分:1)
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)
答案 2 :(得分:1)
viewModel = ViewModelProviders.of(this).get(vm.class); // is deprecate
viewModel = new ViewModelProvider(this).get(vm.class); // is true
答案 3 :(得分:1)
viewModel = new ViewModelProvider(this).get(vm.class);
这仅在具有这种依赖性的情况下起作用:
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'