-
[Android] 화면 이동시 cannot be found from the current destinationAndroid📱/삽질 기록... 2023. 8. 28. 21:00
프로젝트를 진행하다가 겪은 문제였는데
원인이 궁금해서 분석을 해보았습니다.
정확한 원인을 하시는 분은 댓글로 알려주시면 감사하겠습니다!
문제
위 그림처럼 A에서 B로 갔다가 navigationUp이나 popBackStack을 하고 다시 B로 이동을 하고, 백 버튼을 눌러 뒤로 간 후 다시 B로 이동하려고 하면 cannot be found from the current destination가 발생했다.
원인
일단 navigationUp과 그냥 백 버튼이 동작에 차이가 있다는 점은 인식하고, 원인을 찾아보기 위해서 백스택에 대한 로그를 찍어보며 화면 이동을 진행해 보았다.
그 결과 백버튼만 사용하거나 업 버튼만 사용하면 navController에 백스택과 childFragmentManager에 있는 프래그먼트가 동기화되지만, 업 버튼 후에 백 버튼을 사용하면 둘이 동기화되지 않는 것을 확인하였다.
업 버튼 후에 백 버튼을 누르면 childFragmentManager에 프래그먼트는 pop이 되는데 navController는 변경이 되지 않는 것을 확인하였다.
해결
onBackPressedDispatcher를 이용해서 백버튼의 동작을 navController의 navigationUp이나 popStack으로 커스텀해주면 에러가 해결된다.
'Android📱 > 삽질 기록...' 카테고리의 다른 글
[Android] Camera Preview가 준비됐는지 알아보기 (0) 2024.02.08 [Android] isMinifyEnabled 사용 시 java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType 에러 (0) 2023.09.15 [Android] popUpTo & popUpToInclusive (0) 2023.08.02 [Android] Oss-licenses 오픈소스 라이선스 표시하기 (2) 2023.05.19 Error inflating class androidx.fragment.app.FragmentContainerView (0) 2023.03.24