네비게이션 컴포넌트를 사용할 때 UI를 업데이트 하는 방법 중 개발자 문서에 나온 방법은 아래처럼 리스너를 다는 방법입니다.
navController.addOnDestinationChangedListener { _, destination, _ ->
if(destination.id == R.id.full_screen_destination) {
toolbar.visibility = View.GONE
bottomNavigationView.visibility = View.GONE
supportActionBar?.title = "원하는 타이틀"
} else {
toolbar.visibility = View.VISIBLE
bottomNavigationView.visibility = View.VISIBLE
}
}
이 방법은 navigation graph가 간단할 때는 사용하기 좋은데, navigation graph가 커진다면 이 방법은 코드가 지저분해기 때문에
BaseFragment에 UI를 어떻게 보일지에 대한 함수를 정의하고 이걸 구현해서 처리할 수도 있고, 아니면 커스텀 툴바나 이런 게 많이 달리는 화면이라면 Fragment마다 별도로 툴바를 둘 수도 있습니다.
그리고 동적으로 Fragment의 타이틀을 세팅하는 경우라면 mobile_navigation.xml에 설정된 label은 지우시는게 좋습니다. 이게 툴바의 타이틀을 두번 갱신하게 되므로 애뮬레이터 같은데서는 약간의 화면 딜레이 현상을 줄 수도 있습니다.