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.

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