BottomNavigationView 로 화면 전환을 하고 있었는데
한 메뉴(Frag1)에서 다른 프래그먼트(Frag1-1)를 띄울 경우 다른 하단바 메뉴(Frag2)로 돌렸을 때,
프래그먼트의 전환은 잘 작동하지만 하단바의 아이콘이 움직이지 않았다 !
탭의 아이콘이 Frag2 탭에서 갱신되지 않고 머무는 문제가 발생하였다.
하나의 프래그먼트안(Frag1)에서 다른 프래그먼트(Frag1-1)를 호출하는 경우,
네비게이션의 아이템의 메뉴에서 하위 프래그먼트(Frag1-1)는 설정되어있지 않기 때문에 발생하는 오류인듯
🗝️ 1.
popBackStack
함수를 이용하면 하단바의 아이콘은 잘 작동하지만 프래그먼트를 백스택에서 pop해주었기 때문에 띄운 프래그먼트가 pop되고 기존 프래그먼트가 표출되기 때문에 원하지 않는 나에게 결과를 주었다..
❗하단바를 이동해도 결과값은 항상 같았으면 하는 것이 목표!
🗝️ 2.
BottomNavigationView
를 커스텀하여 setOnItemClickListener 에서 onNavDestinationSelected
함수로 현재 클릭된 메뉴 id를 정확하게 넘겨줘서 업데이트 하도록 하자🤗
NavigationUI
는 대상을 메뉴 기반 UI 구성요소에 연결하기 위한 도우미도 제공한다.
NavigationUI
에는 연결된 대상을 호스팅하는 NavController
와 함께 MenuItem
을 받는 도우미 메서드 onNavDestinationSelected()
가 포함되어있다.
MenuItem의 id가 대상의 id와 일치하면 NavController가 그 대상으로 이동한다.
NavigationUI
는 하단 탐색도 처리할 수 있다.
binding.bottomNavView.apply {
setupWithNavController(navController) //컨트롤러 설정
isItemHorizontalTranslationEnabled
setOnItemSelectedListener { item ->
NavigationUI.onNavDestinationSelected(item, navController)
true
}
}
ItemSelectedListener
에서 onNavDestinationSelected()
를 호출하고 하단 탐색 메뉴에서 선택된 항목을 자동으로 업데이트한다.