Jetpack Compose+Firebase项目中无法创建CoursesViewModel实例的问题求助
Jetpack Compose+Firebase项目中无法创建CoursesViewModel实例的问题求助
大家好,我正在用Jetpack Compose结合Firebase开发一款Android应用,目前正基于一个示例项目进行重构。但运行程序时遭遇了致命错误,核心提示是无法创建CoursesViewModel的实例,具体错误日志如下:
FATAL EXCEPTION: main Process: com.tnmd.learningenglishapp, PID: 6542 java.lang.RuntimeException: Cannot create an instance of class com.tnmd.learningenglishapp.screens.list_courses.CoursesViewModel at androidx.lifecycle.viewmodel.compose.ViewModelKt.viewModel(ViewModel.kt:120) at com.tnmd.learningenglishapp.screens.list_courses.CoursesScreenKt.CoursesScreen(CoursesScreen.kt:66) at com.tnmd.learningenglishapp.ComposableSingletons$LearningEnglishAppKt$lambda9$1.invoke(LearningEnglishApp.kt:160) at com.tnmd.learningenglishapp.ComposableSingletons$LearningEnglishAppKt$lambda-9$1.invoke(LearningEnglishApp.kt:159)
下面是相关的代码文件:
1. CoursesScreen.kt
package com.tnmd.learningenglishapp.screens.list_courses @SuppressLint("UnusedMaterialScaffoldPaddingParameter") @Composable @ExperimentalMaterialApi fun CoursesScreen( modifier: Modifier = Modifier, viewModel: CoursesViewModel = hiltViewModel() ) { Scaffold( floatingActionButton = { FloatingActionButton( onClick = { /*viewModel.onUpdateClick(openScreen)*/ }, backgroundColor = MaterialTheme.colors.primary, contentColor = MaterialTheme.colors.onPrimary, modifier = modifier.padding(16.dp) ) { Icon(Icons.Filled.Add, "Update") } } ) { val courses = viewModel.courses.collectAsStateWithLifecycle(emptyList()) Column(modifier = Modifier .fillMaxWidth() .fillMaxHeight()) { LazyColumn { items(courses.value, key = { it.id }) { coursesItem -> CoursesItem( coursesItem ) } } } } }
2. CoursesViewModel.kt
package com.tnmd.learningenglishapp.screens.list_courses class CoursesViewModel @Inject constructor( private val coursesService: CoursesService, logService: LogService ) : LearningEnglishAppViewModel(logService){ val courses = coursesService.courses fun onUpdateClick(openScreen: (String) -> Unit) = openScreen(ACCOUNT_UPDATE) /* fun onCourseActionClick(openScreen: (String) -> Unit, task: Task, action: String) { when (TaskActionOption.getByTitle(action)) { TaskActionOption.EditTask -> openScreen("$EDIT_TASK_SCREEN?$TASK_ID={${task.id}}") TaskActionOption.ToggleFlag -> onFlagTaskClick(task) TaskActionOption.DeleteTask -> onDeleteTaskClick(task) } }*/ }
3. CoursesService.kt
package com.tnmd.learningenglishapp.model.service import com.google.android.gms.tasks.Task import com.tnmd.learningenglishapp.model.Account import com.tnmd.learningenglishapp.model.Courses import kotlinx.coroutines.flow.Flow interface CoursesService { val courses: Flow<List<Courses>> suspend fun getCourses(coursesId: String): Courses? suspend fun save(courses: Courses): String suspend fun update(courses: Courses) suspend fun delete(coursesId: String) }
这个错误的原因看起来不太直观,我暂时没找到问题所在,希望各位能帮忙分析一下可能的原因,谢谢!
备注:内容来源于stack exchange,提问作者TranDatK
相关产品推荐
相关产品推荐

