O controlador de navegação é um dos conceitos principais da navegação. Ele contém o gráfico de navegação e expõe métodos que permitem que o app vá de um destino a outro no gráfico.
Ao usar o componente Navigation, você cria um controlador de navegação
usando a classe NavController. O NavController é a API
de navegação central. Ele rastreia quais destinos o usuário visitou e permite
ir de um destino a outro. Este guia demonstra como criar um
NavController no seu app.
Para informações sobre como adicionar um gráfico de navegação ao NavController, consulte
Projetar o gráfico de navegação. O NavController oferece algumas maneiras diferentes
de navegar até os destinos no gráfico. Para mais informações, consulte Navegar até um
destino.
Compose
Para criar um NavController ao usar o Jetpack Compose, chame
rememberNavController():
val navController = rememberNavController()
Crie o NavController em um nível alto na hierarquia de elementos combináveis. Ele
precisa ser alto o suficiente para que todos os elementos combináveis que precisam referenciá-lo
possam fazer isso.
Isso permite usar o NavController como a única fonte de verdade para
atualizar elementos combináveis fora das telas, seguindo os princípios da
elevação de estado. Essa abordagem está de acordo com os princípios da
elevação de estado.
Visualizações
Se você estiver usando o framework da interface de visualizações, poderá extrair o NavController usando um dos métodos abaixo, dependendo do contexto:
Kotlin:
Java:
NavHostFragment.findNavController(Fragment)Navigation.findNavController(Activity, @IdRes int viewId)Navigation.findNavController(View)
Normalmente, primeiro você recebe um NavHostFragment e depois extrai o
NavController do fragmento. O snippet abaixo demonstra isso:
Kotlin
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
Java
NavHostFragment navHostFragment =
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();
Leia mais
- Projetar o gráfico de navegação: um guia que detalha como adicionar um gráfico
ao
NavControllerque contenha todos os destinos no app. - Navegar até um destino: um guia que detalha como usar o
NavControllerpara ir de um destino a outro no gráfico de navegação.