try to solve this error I used many solution but did’t work.
- declare viewModel in @Composable fun
— or — - declare in Activity and then passed in @Composable fun
error :
FATAL EXCEPTION: main Process: com.fitness.example, PID: 8368java.lang.RuntimeException: Cannot create an instance of class com.fitness.example.db.Data.MergeSets.MyViewModel
Code :
ViewModel Class
`class MyViewModel(private val m_exerciseDa0: M_HomeEx_ExerciseDao) : ViewModel() {
val getJoinedExerciseData: LiveData<List<M_HomeEx_Exercise>> by lazy {
m_exerciseDa0.getJoinExerciseData(planId)
}
private val planId: Int = 55
}`
Data Class
data class M_HomeEx_Exercise( val PlanId: String, val DayId: String, val ExId: String, val ExTime: String,...
Room Dao Interface
`@Dao
interface M_HomeEx_ExerciseDao {
companion object {
const val SELECT_PART = "SELECT DX.${CommonObjects.DayExId}, DX.${CommonObjects.PlanId}, DX.${CommonObjects.DayId},......
@Query(SELECT_PART)
fun getJoinExerciseData(strPlanId: Int): LiveData<List<M_HomeEx_Exercise>>
}`
I tried to get viewmodel two way
Try1 :
`import androidx.lifecycle.viewmodel.compose.viewModel
@Composable
fun ExerciseListScreen(
navController: NavHostController,
homePlanData: Array,
) {
val viewModel:MyViewModel = viewModel()
}`
Try2 :
Declared in MainActivity.kt ->(pass) @Composable Mainscreen.kt -> pass @Composable Exercise.kt
MainActivtiy.kt
`class MainActivity : ComponentActivity() {
private val viewModel: MyViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState){
........
composable(HOME_SCREEN) {
HomeScreen(viewModel)
}`
HomeScreen.kt
@Composable fun HomeScreen(viewModel: MyViewModel) { ..... ExerciseListScreen(navController, exerciseListData,viewModel) }