'ViewModelProviders'已过时。升级生命周期扩展后:从2.1.0到2.2.0-alpha05

问题描述 投票:2回答:2

[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)
      }

“在何处以及如何放置apply {}”块以“ by viewModel”形式出现?也许还有另一种方法?

android android-viewmodel kotlin-android-extensions
2个回答
0
投票

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)

0
投票

代替使用ViewModelProviders.of(this)使用ViewModelProvider(This)

© www.soinside.com 2019 - 2024. All rights reserved.