ViewModelProviders 在 1.1.0 中已弃用

2024-03-28

看着谷歌文档 https://developer.android.com/topic/libraries/architecture/viewmodel for ViewModel,他们展示了下面的示例代码,说明如何获得ViewModel:

val model = ViewModelProviders.of(this).get(MyViewModel::class.java)

当使用最新的依赖时android.arch.lifecycle:extensions:1.1.1没有这样的类ViewModelProviders.

文档 https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders for ViewModelProviders,我看到一条评论说:

此类在 API 级别 1.1.0 中已弃用。使用 ViewModelProvider.AndroidViewModelFactory

问题是,当尝试使用ViewModelProvider.AndroidViewModelFactory,找不到等价物of方法来获取实例ViewModel.

我尝试做什么:

ViewModelProvider.AndroidViewModelFactory.getInstance(application).create(PlayerViewHolder::class.java)

因此该方法的名称create,每次调用 ViewModel 时我都会得到一个新实例,这不是我想要的。

有什么想法可以替换上面已弃用的代码吗?


我使用生命周期扩展2.2.0版本:

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

它应该可以工作,使用ViewModelProvider构造函数。

// With ViewModelFactory   
val viewModel = ViewModelProvider(this, YourViewModelFactory).get(YourViewModel::class.java)


//Without ViewModelFactory
val viewModel = ViewModelProvider(this).get(YourViewModel::class.java)

2020/5/15 更新

我找到了另一种优雅的方式来实现这一点,Android KTX 可以提供帮助

implementation "androidx.fragment:fragment-ktx:1.2.4"
val viewmodel: MYViewModel by viewModels()
val viewmodel: MYViewModel by viewModels { myFactory } //With factory

Ref: https://developer.android.com/reference/kotlin/androidx/fragment/app/package-summary#viewmodels https://developer.android.com/reference/kotlin/androidx/fragment/app/package-summary#viewmodels

2020/06/25:更正了代表的情况

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ViewModelProviders 在 1.1.0 中已弃用 的相关文章

随机推荐

  • 未显示视图的屏幕截图

    我试图在显示 MyFirstViewController 时截取 MySecondViewController view 的屏幕截图 我不希望 MySecondViewController 随时出现在屏幕上 那可能吗 这是我当前在 MyFi
  • HashMap 分组依据 (Java)

    有没有一种方法可以在Java中按Key分组并将值添加到HashMap中 HashMap
  • 理解这部分手臂的汇编代码

    syntax unified thumb cpu cortex m4 arch armv7e m fpu fpv4 sp d16 Changes from unprivileged to privileged mode thumb func
  • constexpr 可以和 volatile 结合使用吗?

    以下代码片段在 Clang 3 5 中工作正常 但在 GCC 4 9 2 中不行 int main constexpr volatile int i 5 有错误 错误 此处不能使用 挥发性 和 constexpr 如果我检查 Clang 生
  • 将新的提交添加到现有的 Git 标签

    我创建了一个 Git 标签v1 1 using git tag a v1 1 m my version 1 1 我推了那个标签 后来我做了一些相关的修改v1 1 现在 当我推送新的更改并使用检查 git 标签时git describe它向我
  • GTK 窗口运动动画?

    我想自动在屏幕上移动我的 GTK WINDOW 目前我将它置于绘制 移动循环中 但这非常不稳定 我对 GTK 编程 以及一般的 gui 编程 非常陌生 我缺少什么 您还没有说您希望窗口遵循什么样的路径 如果路径是时间的一些简单函数 也就是说
  • 如何在swift4中创建串行队列[重复]

    这个问题在这里已经有答案了 DispatchQueue init label qos attributes autoreleaseFrequency target 参数怎么写 原著笔记看了半天 还是不会写串行队列 None
  • Bootstrap - 如何用JSP实现模态弹出窗口

    我正在尝试使用 Spring MVC 通过 JSP 实现模式弹出窗口 In my 索引 jsp我有这个href链接 a href findCompany Find company a and 总是在这个 jsp中 有这样的代码片段 div
  • Crypto++“Tee”式过滤器

    我正在研究根据某些条件处理数据流 数据从输入管道读取 处理并推送到 Crypto CBC Mode
  • 如何在Mac中从命令行启动docker

    我在 mac 上安装了 docker 桌面 因此 为了启动 docker 我打开应用程序并找到 docker 然后我可以在顶部栏看到一个泊坞窗图标 稍后我可以从命令行运行 docker 命令 我的问题是如何从命令行启动 docker 本身
  • 使用 Passport.js 登录后如何通过 React 进行“重定向”?

    新手反应问题 我将其与passport js 和express 一起使用 我已成功登录该应用程序 但我不知道如何进行重定向 router post login passport authenticate local function req
  • ASP.NET Mvc - 可为空参数和逗号作为分隔符

    我应该如何在 global asax 中定义路由才能使用可为空的参数和逗号作为分隔符 我正在尝试为我的搜索用户页面实施路由规则 例如 Controller Action name page status Global asax 的完整条目
  • 是否可以将事件传递给 Ajax 表单的 OnBegin 函数?

    我的应用程序中有一个 Ajax 表单 我想将事件传递给OnBegin函数 然后使用event preventdefault 这将阻止表单提交 然后在检查某些条件时我尝试手动提交表单 但它不起作用 我无法弄清楚为什么 Ajax BeginFo
  • npm 从本地位置而不是从网络安装软件包?

    这个问题让我抓狂 npm 数据库中有一个包 但它有一些错误 这些错误已经在 github 中修复 我如何使用修复版本 github 版本 Edit 您可以直接从 GitHub 存储库安装 甚至只使用 GitHub 用户名和存储库名称 npm
  • 从 eclipse 中卸载和删除插件

    我正在从 eclipse 卸载选项中卸载名为 X 的插件 现在为了明确方法 我进入 eclipse 插件目录并从那里删除插件 jar 文件 现在我尝试重新安装相同的插件 并且 eclipse 提示错误 期间发生错误 org eclipse
  • 结构化 Spark 流指标检索

    我有一个具有结构化 Spark 流的应用程序 我想获取一些指标 例如调度延迟 延迟等 通常 此类指标可以在 Spark UI Streaming 选项卡中找到 但是 结构化流不存在此类功能我知道 那么如何获取这些指标值呢 目前 我尝试使用查
  • Java 泛型:泛型映射(深拷贝)的方法签名

    我有几个Map其本身可能再次包含Maps 任何类型 我写了一个带有签名的方法 public static
  • netbeans jvi vimrc 文件位置

    我已经开始使用 netbeans vim 插件 Jvi 并且我似乎找不到 vimrc 文件位置 我发现一个选项似乎说它将把 vimrc 保存在主文件夹中 但那里没有 我正在使用Ubuntu 谢谢 jVi 不支持 vimscript 因此它不
  • 文本框的日期验证

    我一直用它来将日期设为 mm dd yyyy 格式
  • ViewModelProviders 在 1.1.0 中已弃用

    看着谷歌文档 https developer android com topic libraries architecture viewmodel for ViewModel 他们展示了下面的示例代码 说明如何获得ViewModel val