일단 네비게이션의 보편적인 구성은 BottomNavigationView에 있는 메뉴에 해당하는 프레그먼트는탑레벨화면이므로 백아이콘이 없고, 여기에서 한단계 더 들어간 프레그먼트는 툴바에 백아이콘이 존재하지만 BottomNavigationView는 보이지 않는 형태입니다. 따라서 아주 특별한 이유가 없다면 HomeFragment2에서는 BottomNavigationView를 보이지 않게 만드는게 좋습니다. 이래야 네이게이션이 꼬이거나 하는 특이한 상황을 미연에 방지할 수 있습니다.
navController.addOnDestinationChangedListener { _, destination, _ ->
val isTopLevelScreen = destination.id in appBarConfiguration.topLevelDestinations
navView.isVisible = isTopLevelScreen
}
안드로이드 스튜디오에서 만들어주는 프로젝트에는 툴바에 대한 처리가 빠져있어서 툴바에 있는 백아이콘을 눌러도 아무 반응이 없기 때문에 아래와 같이 onSupportNavigateUp 을 오버라이드해 주세요.
override fun onSupportNavigateUp(): Boolean {
return (NavigationUI.navigateUp(navController, appBarConfiguration)
|| super.onSupportNavigateUp())
}
그리고 또 다른 문제의 원인은 Home, Dashboard, Nofications는 모두 최상위 메뉴라서 이동시에는 백스택에 HomeFragemtn2와 같은 프레그먼트가 존재하면 안됩니다. 따라서 Home2Fragment에 BottomNavigationView가 필요하다면 최상위메뉴를 선택할 때 백스택을 클리어되어야 겠죠. 잘 생각해 보시면 Home2Fragment는 HomeFragment의 하위 화면인데 Dashboard로 이동했을 때도 남아 있는게 자연스럽지 않을 겁니다.
따라서 제가 앞서 말씀드린 일반적인 네비게이션 구성을 따르는 것이 문제를 최소화할 수 있는 방법이며, 커스텀된 동작을 원하신다면, Navigation Component를 분석하셔서 추가적인 코드를 작성하셔야 할 것 같습니다.