You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用lazy属性委托初始化Android ViewModel时缺少getValue方法报错如何解决

报错原因
  • 核心问题是代码存在语法错误:ViewModelProvider.(this) 中多了一个多余的英文句号,错误的语法导致编译器无法正确识别 lazy 闭包的返回值类型,进而触发委托方法匹配失败的报错。
  • 补充排查点:如果修正语法后依然报错,可检查是否正确导入了Kotlin标准库相关依赖,以及ViewModel的依赖包是否版本匹配。
解决方法
  1. 首先修正语法错误,删除ViewModelProvider后面多余的句号,修改后的代码如下:
private val quizViewModel: QuizViewModel by lazy {
    ViewModelProvider(this).get(QuizViewModel::class.java)
}
  1. 若使用的是AndroidX Lifecycle 2.2.0及以上版本,推荐使用官方提供的KTX扩展简化写法,无需手动实现lazy委托:
    • 先确保模块级build.gradle中已引入activity KTX依赖:implementation "androidx.activity:activity-ktx:1.7.2"(版本可根据你的项目适配调整)
    • 直接用viewModels()属性委托初始化即可:
    private val quizViewModel: QuizViewModel by viewModels()
    

内容的提问来源于stack exchange,提问作者nazim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 07:00:04