Форум для тех, кто программирует под Android
Anonymous
Почему ViewModel не разрушается в JetPack Compose после нажатия кнопки назад?
Сообщение
Anonymous » 09 фев 2025, 02:59
Когда я нажимаю кнопку назад с экрана записи и возвращаюсь к экрану курса - recordViewModel не разрушается. Я использую Koin для ViewModel, как это исправить < /p>
Код: Выделить всё
val viewModelModule = module {
viewModel { CourseViewModel(get()) }
viewModel { RecordViewModel(get()) }
}
setContent {
MaterialTheme {
val navController = rememberNavController()
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
NavHost(
navController = navController,
startDestination = Screen.Course.name,
modifier = Modifier
.fillMaxSize()
.padding(innerPadding)
) {
composable(route = Screen.Course.name) {
val courseViewModel: CourseViewModel = getViewModel()
val uiState by courseViewModel.uiState
CourseScreen(uiState.courseState, innerPadding) {
navController.navigate(Screen.Record.name)
}
}
composable(route = Screen.Record.name) {
val recordViewModel: RecordViewModel = getViewModel()
RecordScreen(recordViewModel.message.value) {
recordViewModel.recordButtonClicked()
}
}
}
}
}
}
Пожалуйста, помогите. Спасибо
Подробнее здесь:
https://stackoverflow.com/questions/794 ... ng-back-bu
1739059183
Anonymous
Когда я нажимаю кнопку назад с экрана записи и возвращаюсь к экрану курса - recordViewModel не разрушается. Я использую Koin для ViewModel, как это исправить < /p> [code]val viewModelModule = module { viewModel { CourseViewModel(get()) } viewModel { RecordViewModel(get()) } } setContent { MaterialTheme { val navController = rememberNavController() Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> NavHost( navController = navController, startDestination = Screen.Course.name, modifier = Modifier .fillMaxSize() .padding(innerPadding) ) { composable(route = Screen.Course.name) { val courseViewModel: CourseViewModel = getViewModel() val uiState by courseViewModel.uiState CourseScreen(uiState.courseState, innerPadding) { navController.navigate(Screen.Record.name) } } composable(route = Screen.Record.name) { val recordViewModel: RecordViewModel = getViewModel() RecordScreen(recordViewModel.message.value) { recordViewModel.recordButtonClicked() } } } } } } [/code] Пожалуйста, помогите. Спасибо Подробнее здесь: [url]https://stackoverflow.com/questions/79424102/why-viewmodel-is-not-getting-destroyed-in-jetpack-compose-after-pressing-back-bu[/url]