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

Android创建MainViewModel时报Cannot create an instance of class如何解决

报错原因定位
  • AndroidViewModel 实例化缺少对应工厂:默认的ViewModelProvider(this)使用的无参工厂仅支持实例化无参构造的ViewModel,你的MainViewModel继承自AndroidViewModel,构造函数要求传入Application参数,默认工厂无法识别该构造参数,直接触发实例化失败。
  • 存在语法错误导致类加载失败:你提供的MainViewModel代码中多个AsyncTask子类的可变参数声明错误,Movie..、Void..、Integer..均少写了一个点,正确的Java可变参数声明为三个点...,该问题会导致编译/类加载失败,无法创建ViewModel实例。
解决方案

1. 修复ViewModel实例化逻辑

使用专门支持AndroidViewModel的工厂来创建实例,修改MainActivity中的实例化代码:

// 替换原来的viewModel初始化代码
viewModel = new ViewModelProvider(
        this,
        ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication())
).get(MainViewModel.class);

2. 修复所有可变参数语法错误

把MainViewModel中所有错误的可变参数声明修改为正确格式:

  • InsertTask的doInBackground参数修改为Movie... movies
  • DeleteMoviesTask的doInBackground参数修改为Void... integers
  • GetMovieTask的doInBackground参数修改为Integer... integers

修改完成后重新编译运行即可解决无法创建ViewModel的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:06:05