Kotlin Android:属性委托必须具有“getValue(DashViewModel, KProperty*>)”方法

2023-12-27

我正在尝试遵循 Kotlin 中 ViewModels 的官方 Android 指南。 我直接复制粘贴最简单的官方示例 https://developer.android.com/topic/libraries/architecture/viewmodel#kotlin但语法似乎不合法。

这部分会导致问题:

private val users: MutableLiveData<List<User>> by lazy {
    MutableLiveData().also {
        loadUsers()
    }
}

预览给我这个错误:

Property delegate must have a 'getValue(DashViewModel, KProperty*>)' method. None of the following functions is suitable.

如果我想启动该应用程序,我会收到此错误:

Type inference failed: Not enough information to infer parameter T in constructor MutableLiveData<T : Any!>()
Please specify it explicitly.

我不明白这两个错误和其他具有相同错误的问题似乎是由不同的原因引起的。我的猜测是MutableLiveData().also导致问题但我不知道为什么。考虑到这是一个官方示例,这很奇怪。


您似乎没有声明User class.

第二个问题是另一个文档错误 https://issuetracker.google.com/issues/161034218,并且您需要提供类型MutableLiveData构造函数调用。

所以,这有效:

package com.commonsware.myapplication

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel

class User

class MainViewModel : ViewModel() {
  private val users: MutableLiveData<List<User>> by lazy {
    MutableLiveData<List<User>>().also {
      loadUsers()
    }
  }

  fun getUsers(): LiveData<List<User>> {
    return users
  }

  private fun loadUsers() {
    // Do an asynchronous operation to fetch users.
  }
}

考虑到这是一个官方示例,这很奇怪。

一般来说,将它们视为一种技术的说明,不一定是您要复制并粘贴到项目中的东西。

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

Kotlin Android:属性委托必须具有“getValue(DashViewModel, KProperty*>)”方法 的相关文章

随机推荐

  • Rails 4:将控制器分组到文件夹中

    我想将所有控制器及其视图分组到文件夹中 例如在 admin 下 这就是我所做的 1 我把所有的都搬走了controllers在一个文件夹下admin 2 我把所有的都搬走了views在一个文件夹下admin 3 我在 Rails Guide
  • 模块扩展中不允许导出和导出分配

    import Request as ExpressRequest Response as ExpressResponse from express declare module kvl export kvl declare const kv
  • ASP.NET 中的安全随机数

    据我所知 Random 被初始化为当前时间 如果两个连接在同一秒内命中 我应该得到相同的两个随机数 对于一个大型网站来说这是可能的 锁定不好 我该如何解决 注意 该数字用于会话 ID 编辑 我被困在使用长 缩短128位GUID感觉不对 而不
  • 在引号外用逗号分割

    我的程序从文件中读取一行 该行包含逗号分隔的文本 例如 123 test 444 don t split this more test 1 我希望分割的结果是这样的 123 test 444 don t split this more te
  • 无法在 mysql 中设置线程堆栈大小

    我正在努力增加线程堆栈 https dev mysql com doc refman 5 7 en server system variables html多变的 我可以使用命令行选项成功完成此操作 如下所示 usr sbin mysqld
  • Angular 双向数据绑定并观察父组件的变化

    使用双向数据绑定时 似乎无法观察父组件的变化 我有一个用于收集标签列表的自定义输入组件 双向数据绑定在此组件与其父组件之间设置并运行 the parent component is just a form here is how I m a
  • Bootstrap Modal 位于 Chrome 的背景后面

    我正在使用 Twitter Bootstrap CSS 和 JS 问题来自 Modal 插件 它在 Firefox 和 IE 上工作正常 但在 Chrome 中显示很差 Modal 成功弹出 但隐藏在模态背景后面 这意味着无法填写表单或查看
  • 如何在 Mac 上构建和安装 Valgrind?

    我在 Mac OS X 上使用 codeblocks 10 05 我下载了 Valgrind 并解压了一个文件夹 我完全迷失了方向 不知道如何构建它 我不知道任何终端 控制台命令 并且通常是编程新手 所以我不知道如何 构建 或 编译 它 我
  • 如何使用python删除目录中所有pdf文件的密码?

    我的目录中有一些 pdf 文件 其中一些受密码保护 另一些则不受密码保护 我知道每个受密码保护的文件的密码 如何自动执行从每个 pdf 文件中删除密码的过程 我在想这样的事情 获取受密码保护的文件 尝试从我制作的单词列表中给出的密码 打印出
  • 异步模式 - 在从方法返回某些值之前等待事件

    免责声明 这段代码被简化 很多 以便于阅读 我知道它不符合正常的代码标准 我的问题可以在下面的代码中看到 基本上我有一个解析对象的调用者 我必须等到子组件完成 由事件发出信号 然后才能返回基于子组件上的某些值的值 问题是 对于这种情况 首选
  • 如何使用 FFMPEG 捕获浏览器的选项卡内容

    我正在开发一个项目 需要录制将在不同浏览器选项卡中播放的 HTML5 动画 所以我读了一点 显然可以使用 FFMPEG 来完成 也许使用 gdigrab 设备 https www ffmpeg org ffmpeg devices html
  • 将函数应用于任意长的参数列表

    我想创建一个函数 apply 它接受具有任意数量参数的函数以及整数列表 并返回函数的结果 其中列表中的每个整数都是按顺序排列的参数 我在想这样的事情 apply Int gt Int gt Int gt Int apply f x xs a
  • 使任务栏上的应用程序图标具有透明背景(UWA)

    我正在制作一个通用 Windows 应用程序 我希望任务栏上的应用程序图标具有透明背景 因此它不在彩色框中 很多微软自己的库存应用程序都是这样的 邮件 照片 Xbox 等 我知道它可以做到 因为我是偶然做到的 但我使用的图标太大 当我使用正
  • 使用 Terraform 的 Google Cloud 凭据

    这是一个新手问题 但我刚刚开始使用 Terraform Terragrunt 进行 GCP 配置 并且我发现获取 GCP 凭据的工作流程非常混乱 我以前只使用过 AWS 获取凭证并在 AWS CLI 中配置它们非常简单 基本上 Google
  • 将数据从 edittext 发送到 listview

    我创建了两个Activities MainActivity ListActivity 并在MainActivity 我有一个EditText和一个保存按钮 In ListActivity 我有一个ListView 我想保存写入的值 数据 字
  • 在 Sql Server 中存储 UInt32 的最佳方法

    我正在开发一个使用第三方组件的应用程序 该组件返回一个 UInt32 类型的值 我需要将此 UInt32 存储在 Sql Server 表中 我正在考虑只使用一个简单的 int 列并插入如下值 int value int cs int Ma
  • 阻止用户与底层视图的交互

    在我的应用程序中 我有一个覆盖视图 当发生某些处理和网络时会显示该视图 它只是一个半透明视图 UIView 的子类 上面有一个加载指示器 填充整个屏幕 我想阻止任何底层视图接收用户交互 例如 不应滚动底层表视图 不应按下按钮 我可以从叠加视
  • Zuul转发错误,负载均衡器没有可供客户端使用的服务器

    我正在尝试遵循本教程 Spring Boot 微服务与 Eureka 和 Zuul 代理与 Feign 客户端 https medium com iroshan du spring boot micro services with eure
  • css网格儿童比例过渡/动画

    我试图在点击 CSS 网格时缩放子元素的大小 但没有成功 问题是我实际上没有缩放它 我只是更改了列和行位置以填充所有网格 div width 100 height 140px display grid grid template colum
  • Kotlin Android:属性委托必须具有“getValue(DashViewModel, KProperty*>)”方法

    我正在尝试遵循 Kotlin 中 ViewModels 的官方 Android 指南 我直接复制粘贴最简单的官方示例 https developer android com topic libraries architecture view