앱을 탐색한다는 것은 다른 화면으로 이동한다는 것을 말한다. 보통 인텐트나 프래그먼트 트랜잭션을 통해 간단한 작업을 구현했다.
좀 더 복잡한 구현을 만들어야될 때는 어떻게 해야될까? 예를 들어, 여러 화면 전환을 위해 많이 사용되는 BottomNavigation View가 될 수 있겠다.
이런 부분에서 탐색 컴포넌트를 사용하면 아래와 같은 장점들이 있다.
ViewModel
지원 : 탐색 그래프에 대한 ViewModel
을 확인해 그래프 대상 사이에 UI 관련 데이터를 공유NavHostFragment
: 레이아웃을 추가할 Fragment
이다. Navigation Graph에서 포함하는 다양한 Fragment 목적지가 교차되는 곳이다.
NavHost
: Navigation Graph에서 목적지를 표시하는 빈 컨테이너다. 목적지 구성요소에는 프래그먼트 대상을 표시하는 기본 NavHost
구현인 NavHostFragment`가 포함된다. NavHostFragment
는 개별적으로 NavController
를 가지고 있다.
NavController
: NavHost
에서 앱 탐색을 관리하는 객체입니다. NavController
는 사용자가 앱 내에서 이동할 때 NavHost
에서 대상 콘텐츠의 전환을 오케스트레이션한다.
앱을 탐색하는 동안 탐색 그래프에서 특정 경로를 따라 이동할지, 특정 대상으로 직접 이동할지 NavController
에게 전달한ㅏ. 그러면 NavController
가 NavHost
에 적절한 대상을 표시한다.