Componente de Navegação para Kotlin: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é o Componente de Navegação e para que serve

\n\n

O Componente de Navegação é uma biblioteca do Google para Android, projetada para simplificar a navegação entre telas (fragmentos, Activities, diálogos) em aplicativos Kotlin e Java. Ela faz parte do Android Jetpack e fornece uma maneira unificada e previsível de gerenciar transições, processar argumentos e trabalhar com o botão "Voltar".

\n\n

Para que serve? Sem o Componente de Navegação, os desenvolvedores frequentemente escreviam muito código repetitivo: criavam FragmentManager, processavam a BackStack, transmitiam dados via Bundle e monitoravam o estado das transições. A biblioteca resolve esses problemas oferecendo:

\n
    \n
  • Editor visual de navegação — grafo de transições em XML.
  • \n
  • Transmissão segura de argumentos via Safe Args (plugin Gradle).
  • \n
  • Gerenciamento automático da BackStack — o botão "Voltar" funciona corretamente.
  • \n
  • Links profundos (Deep Links) — transições a partir de notificações ou links externos.
  • \n
  • Animações de transição — configurações simples em XML.
  • \n
\n\n

Instalação do Componente de Navegação

\n\n

Como o Componente de Navegação é uma biblioteca para Android, a instalação ocorre através do sistema de build Gradle, e não via pip ou npm. Adicione as dependências no arquivo build.gradle (nível do módulo, geralmente app/build.gradle):

\n\n
// build.gradle (Module: app)\nplugins {\n    id 'com.android.application'\n    id 'org.jetbrains.kotlin.android'\n    id 'androidx.navigation.safeargs.kotlin' // para Safe Args\n}\n\nandroid {\n    // ... configurações padrão\n}\n\ndependencies {\n    implementation 'androidx.navigation:navigation-fragment-ktx:2.7.7'\n    implementation 'androidx.navigation:navigation-ui-ktx:2.7.7'\n    // Para trabalhar com recursos dinâmicos (Feature Modules)\n    implementation 'androidx.navigation:navigation-dynamic-features-fragment:2.7.7'\n}\n
\n\n

Certifique-se também de que o plugin Safe Args foi adicionado no build.gradle raiz:

\n\n
// build.gradle (Project level)\nplugins {\n    id 'androidx.navigation.safeargs.kotlin' version '2.7.7' apply false\n}\n
\n\n

Após sincronizar o Gradle, a biblioteca está pronta para uso.

\n\n

Início rápido com exemplo de código

\n\n

Vamos criar um aplicativo simples com duas telas: HomeFragment e DetailFragment. O usuário clica em um botão na primeira tela e navega para a segunda, transmitindo uma string.

\n\n

Passo 1: Crie o arquivo de navegação

\n

Na pasta res/navigation, crie o arquivo nav_graph.xml:

\n\n
<?xml version="1.0" encoding="utf-8"?>\n<navigation xmlns:android="http://schemas.android.com/apk/res/android"\n    xmlns:app="http://schemas.android.com/apk/res-auto"\n    xmlns:tools="http://schemas.android.com/tools"\n    android:id="@+id/nav_graph"\n    app:startDestination="@id/homeFragment">\n\n    <fragment\n        android:id="@+id/homeFragment"\n        android:name="com.example.app.HomeFragment"\n        android:label="Home"\n        tools:layout="@layout/fragment_home">\n        <action\n            android:id="@+id/action_homeFragment_to_detailFragment"\n            app:destination="@id/detailFragment" />\n    </fragment>\n\n    <fragment\n        android:id="@+id/detailFragment"\n        android:name="com.example.app.DetailFragment"\n        android:label="Detail"\n        tools:layout="@layout/fragment_detail">\n        <argument\n            android:name="message"\n            app:argType="string" />\n    </fragment>\n</navigation>\n
\n\n

Passo 2: Configure a Activity

\n

No activity_main.xml, adicione o NavHostFragment:

\n\n
<?xml version="1.0" encoding="utf-8"?>\n<androidx.constraintlayout.widget.ConstraintLayout\n    xm                    

Recommendations