@HiltViewModel
class TaskViewModel @Inject constructor(
private val repository: AppRepository
) : ViewModel() {
fun getLiveData(date: LocalDate): LiveData<List<Task>> {
...
}
}
My screen:
@Composable
fun TaskScreen(modifier: Modifier = Modifier, taskViewModel: TaskViewModel =
viewModel()) {
val date = LocalDate.now()
val tasks = taskViewModel.getLiveData(date = date).observeAsState()
tasks.value?.let { items ->
LazyColumn(modifier = modifier) {
items(items) { task ->
...
}
}
}
}
The app crashes with the following exception:
Caused by: java.lang.NoSuchMethodException: org.mycodelab.test2.viewmodel.TaskDayViewModel.<init> []
at java.lang.Class.getConstructor0(Class.java:2363)
at java.lang.Class.getDeclaredConstructor(Class.java:2201)
at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.kt:202)
This is my first attempt at using jetpack compose.
The viewModel
when using Hilt in Compose becomes hiltViewModel
, so your code would look like this:
fun TaskScreen(modifier: Modifier = Modifier, taskViewModel: TaskViewModel =
hiltViewModel()) {}