O que é o Componente de Navegação e para que serve
\n\nO 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\nPara 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
Instalação do Componente de Navegação
\n\nComo 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):
// 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\nCertifique-se também de que o plugin Safe Args foi adicionado no build.gradle raiz:
// build.gradle (Project level)\nplugins {\n id 'androidx.navigation.safeargs.kotlin' version '2.7.7' apply false\n}\n\n\nApós sincronizar o Gradle, a biblioteca está pronta para uso.
\n\nInício rápido com exemplo de código
\n\nVamos 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\nPasso 1: Crie o arquivo de navegação
\nNa pasta res/navigation, crie o arquivo nav_graph.xml:
<?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\nPasso 2: Configure a Activity
\nNo activity_main.xml, adicione o NavHostFragment:
<?xml version="1.0" encoding="utf-8"?>\n<androidx.constraintlayout.widget.ConstraintLayout\n xm