运行时初始化ViewModel触发ClassCastException问题求助
Android应用崩溃问题:ClassCastException(Room数据持久化场景)
我正在学习Android Developers的《Android Basics with Compose》课程,目前处于Unit 6.2「使用Room实现数据持久化」阶段,是Android开发入门者。我开发了一款名为Outlook Planner的笔记+简易天气预报应用,应用结构参考课程中的Inventory App。
我的HomeViewModel和MakePlanViewModel均通过AppViewModelProvider获取SQLite+Room数据库的依赖,分别用于首页展示笔记列表和MakePlan页面的增改操作。但应用运行时崩溃,抛出如下异常:
java.lang.ClassCastException: android.app.Application cannot be cast to com.example.outlook.planner.OutlookPlannerApplication at com.example.outlook.planner.ui.AppViewModelProviderKt.outlookPlannerApplication(AppViewModelProvider.kt:42) at com.example.outlook.planner.ui.AppViewModelProvider$Factory$1$2.invoke(AppViewModelProvider.kt:32) at com.example.outlook.planner.ui.AppViewModelProvider$Factory$1$2.invoke(AppViewModelProvider.kt:30)
我需要让应用能正常访问数据库,实现笔记的展示和编辑,但目前无法定位和解决问题。这是我的学校项目,已经投入不少精力,希望能得到帮助。
相关代码文件说明:
- OutlookPlannerApplication:自定义Application类,负责数据库初始化
- AppViewModelProvider:ViewModel工厂类,用于提供依赖数据库的ViewModel实例
- HomeViewModel:首页对应的ViewModel,处理笔记列表数据逻辑
- MakePlanViewModel:新建/编辑笔记页面的ViewModel,处理笔记增改操作
- 可获取完整项目代码进行排查
内容的提问来源于stack exchange,提问作者Ryan Barillos
相关产品推荐
相关产品推荐

