Criar um controlador de navegação

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:

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