문제
navigation 작업 중 back 토글 버튼을 누르면 popBackStack() 통해 화면이 전 화면으로 이동해야 하는데 아무런 동작도 일어나지 않음
해결
일반 사용자로 활동하고 로 이동해야 하는 경우 함수에서 Screen.Home.route매개변수를 사용합니다 .inclusive = false
navController.popBackStack(Screen.Home.route, false)
하지만 관리자로서 활동하고 로 이동해야 하는 경우 함수에서 Screen.AdminHomeScreen.route매개변수를 사용합니다 .inclusive = true
navController.popBackStack(Screen.AdminHomeScreen.route, true)
우리의 경우에는 무엇이 있을까요 popBackStack()? 이것은 함수이며, 우리가 내부로 다시 이동하는 데 사용할 수 있는 것입니다 NavController BackStack. 그리고 그것은 두 개의 필수 매개변수를 가지고 있습니다:
route- 열려고 하는 화면의 경로
inclusive- 부울 값, 매개변수에 지정된 것을 포함하여 매개 inclusive = true변수에 지정된 BackStack 상단에서 모든 대상을 팝(제거)하는 경우 . 매개변수에 지정된 것을 포함하여 매개변수에 지정된 BackStack 상단에서 모든 대상을 팝(제거)하는 경우 . 매개변수에 지정된 것을 포함하지 않고 매개 변수 에 지정된 BackStack 상단에서 모든 대상을 팝(제거)하는 경우 .routerouteinclusive = falserouteroute
예를 들어:
Open Screen1 -> Then open Screen 2 -> Then open Screen 3 ->
-> Then call navController.popBackStack(route = "Screen2", inclusive = true) ->
-> Screen2 will remove, Screen1 will open
Open Screen1 -> Then open Screen 2 -> Then open Screen 3 ->
-> Then call navController.popBackStack(route = "Screen2", inclusive = false) ->
-> Screen2 will open
귀하의 경우에는 매개변수로 인해 편집 내용 화면에서 AdminHomeScreen으로 다시 탐색할 수 없는 것 같습니다.inclusive = true
(출처- https://stackoverflow.com/questions/77613089/navcontroller-popbackstack-jetpack-compose-not-working)
'android' 카테고리의 다른 글
MVVM vs MVI (0) | 2024.08.11 |
---|---|
[Compose] navigation으로 object 전달하기 (0) | 2024.07.30 |
libs.versions.toml / Room 라이브러리 빌드하기 / ksp (0) | 2024.07.14 |
[안드로이드 스튜디오] git 커밋할 때 다른 계정으로 올라간다면? 계정 변경 방법 (0) | 2024.07.13 |
android webview 통신 webBridge (1) | 2023.12.26 |