일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 막내의막무가내 코틀린
- 막내의막무가내 목표 및 회고
- 막내의막무가내 rxjava
- 막내의막무가내 플러터 flutter
- Fragment
- 부스트코스
- 막내의막무가내 코틀린 안드로이드
- 막내의막무가내 SQL
- 막내의 막무가내 알고리즘
- 막무가내
- 주엽역 생활맥주
- 막내의막무가내 일상
- 막내의막무가내 코볼 COBOL
- 막내의막무가내 안드로이드 코틀린
- 안드로이드 Sunflower 스터디
- 막내의막무가내 프로그래밍
- 막내의막무가내 안드로이드 에러 해결
- 안드로이드
- 막내의 막무가내
- 막내의막무가내 알고리즘
- 2022년 6월 일상
- 막내의막무가내 플러터
- 막내의막무가내
- 막내의막무가내 안드로이드
- 프로그래머스 알고리즘
- 부스트코스에이스
- flutter network call
- 주택가 잠실새내
- 안드로이드 sunflower
- 프래그먼트
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[안드로이드] Jetpack Navigation BottomNavigationView backstack error 처리 본문
[안드로이드] Jetpack Navigation BottomNavigationView backstack error 처리
막무가내막내 2020. 8. 11. 20:00
[2021-04-14 업데이트]
Jetpack Navigation 에서 제공하는 기능 중 하나인 BottomNavigationView 컴포넌트를 사용하고 있었습니다. 첫 화면이 BottomNavigationView 인 상태였는데 로그인 프래그먼트를 앞에 만들일이 생겼었습니다.
LoginFragment 가 이제 <navigaiton> 의 startDestination 이 되었는데 LoginFragment 의 백스택을 popUpTo 등으로 제거할려면 바텀네비게이션간의 이동도 스택으로 계속쌓이고 LoginFragment 백스택을 제거하지 않으면 좀 이상한 네비게이션 구조를 가지고 바텀네비에서 바텀네비간 이동한 후 백스택을 누르면 바텀네비 홈으로 가는데 LoginFragment 로 가는 이상한 현상들이 일어났습니다.
결론부터 말씀드리면, Jetpack Navigation 과 바텀네비게이션뷰를 엮을려면 네비게이션 그래프의 첫 startDestination 이 바텀네비의 프래그먼트어야만 잘 연동 또는 동작이 바르게 됩니다.
뭔가 많이 나올듯한 흐름인데 아무리 구글링해도 찾을 수 없었고 구글 예제도 바텀네비부터 시작하는 플로우들 뿐이었습니다.
해결방법은 다음과 같습니다.
1. 먼저 startDestination 은 당연히 LoginFragment 로 해줍니다.
2. 보통 액티비티에서 처음에 네비게이션 host 프래그먼트를 findNavController 로 받아서 바텀네비게이션에 setUpWIthNavController() 를 해줄텐데 이것을 일단 보류합니다. (함수로 만들어만 놓습니다.)
3. 로그인프래그먼트에서 시작하고 action이 바텀네비프래그먼트로 되어있는 상태라고 가정하겠습니다. (LoginFragment -> BottonNav1Fragment)
로그인 관련 로직을 처리하고 바텀네비프래그먼트로 action(이동) 하기전에
findNavController().graph.startDestination = R.id.바텀네비프래그먼트ID
를 통해 startDestination 을 바텀프래그먼트 ID로 바꿪고 2번에서 미뤄놨던 작업을 activity.함수() 로 바텀네비를 세팅을 해줍니다.
그러면 startDestination 도 직접 바꿔논 상태고 바텀네비의 세팅이 잘 될 것입니다.
댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!
'안드로이드 > 코틀린 & 아키텍처 & Recent' 카테고리의 다른 글
[안드로이드] 데이터바인딩 xml onclick 한글 파라미터 오류 해결 (2) | 2020.08.29 |
---|---|
[안드로이드] Android Jetpack WorkManager 백그라운드 작업처리 정리 (2) | 2020.08.19 |
[안드로이드] DI Dagger2 @Singleton vs @Resuable 차이점 정리 (0) | 2020.08.08 |
[안드로이드] Lottie Animation 사용법 (0) | 2020.08.02 |
[안드로이드] 안드로이드 Collapsing Toolbar Layout with Constraint Layout, NestedScroll 구현 (0) | 2020.08.02 |