求助:无法创建CharactersViewModel实例,分页开发报错排查
问题
开发分页功能时遇到以下报错:
Cannot create an instance of class com.example.myapplication.CharactersViewModel
系统无法创建CharactersViewModel实例,相关截图:
- 报错栈:

- MainActivity代码:

- ViewModel代码:

常见原因及解决办法
带参构造未配置Factory
ViewModelProvider默认只能实例化无参构造的ViewModel。如果你的CharactersViewModel有带参构造(比如传入分页数据源、Repository等),必须自定义ViewModelProvider.Factory来创建实例,或者用依赖注入框架管理。
示例自定义Factory:class CharactersViewModelFactory(private val repo: CharacterRepository) : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>): T { return CharactersViewModel(repo) as T } }在Activity中使用Factory创建ViewModel:
val viewModel = ViewModelProvider(this, CharactersViewModelFactory(repo))[CharactersViewModel::class.java]访问权限问题
确认CharactersViewModel是public类,构造函数为public(Kotlin默认public,除非显式设置了private/internal)。依赖注入配置错误(如Hilt)
若用Hilt注入ViewModel,需检查:- ViewModel添加
@HiltViewModel注解 - 构造函数加
@Inject注解 - 宿主Activity/Fragment加
@AndroidEntryPoint注解 - 项目已正确配置Hilt依赖与插件
- ViewModel添加
内容的提问来源于stack exchange,提问作者Happy
相关产品推荐
相关产品推荐

