-
Notifications
You must be signed in to change notification settings - Fork 0
TroubleShooting ‐ Navigation 백스택 오류
EunhoKang edited this page Dec 5, 2023
·
2 revisions
다음의 과정에서 오류가 발생한다.
- Fragment에서 navigationController.navigate()로 화면 전환
- 백스택 pop()을 통해 기존 화면으로 이동
- 다시 navigationController.navigate()로 같은 Fragment로 전환하려 하면 오류 발생
- 버튼 클릭과 같은 사용자 로직은 네비게이션 액션을 두 번 이상 호출할 수 있다
- a->b 액션이 두 번 이상 발생하게 되면 백스택으로 한번 pop해서 이전 스택으로 돌아와도 초기화되고 이 때문에 에러가 발생
private fun NavController.safeNavigate(direction: NavDirections) {
currentDestination?.getAction(direction.actionId)?.run { navigate(direction) }
}
- 액션이 두 번 트리거되지 못하도록 현재 목적지에 해당 액션이 있는지 확인
- 여러 번의 네비게이션 액션이 발생하더라도 유효한 한 번의 액션만 허용한다