android

[Compose] popBackStack() 눌러도 아무 동작도 일어나지 않을 때

liz_devel 2024. 7. 19. 12:24

문제

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)

반응형