不推荐使用"ViewModelProviders".将生命周期扩展从2.1.0升级到2.2.0-alpha05之后 [英] 'ViewModelProviders' is deprecated. After upgrading lifecycle-extensions:2.1.0 to 2.2.0-alpha05

查看:308
本文介绍了不推荐使用"ViewModelProviders".将生命周期扩展从2.1.0升级到2.2.0-alpha05之后的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Android Studio->新建项目->选择标记的活动".

Android Studio -> New Project -> Choice "Tabbed Activity".

在将生命周期扩展从2.1.0升级到2.2.0-alpha05之后,不推荐使用ViewModelProviders. 在简单的情况下,它可以由"by viewModels()"替换 例如:

After upgrading lifecycle-extensions from 2.1.0 to 2.2.0-alpha05 ViewModelProviders is deprecated. In simple cases it replaceable by "by viewModels()" for example:

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

替换为:

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

以"by viewModel"形式在哪里放置apply {}块? 也许还有另一种方法?

where and how to place apply{} block in a "by viewModel" form? Maybe there is another way?

推荐答案

ViewModelProviers已过时,我们只使用

ViewModelProviers is deperecated, we just use 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)

这篇关于不推荐使用"ViewModelProviders".将生命周期扩展从2.1.0升级到2.2.0-alpha05之后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆