Junior
Como ligar múltiplas telas numa aplicação?
sobes.tech IA
Resposta da IA
Componente NavComponent (componente de navegação) do Android Jetpack.
- Fragment Nav Component: Para aplicações baseadas em fragments. Define o gráfico de navegação com destinos (telas) e ações (transições).
- Navigation Actions: Definem como passar de um destino para outro. Podem conter argumentos.
- Safe Args: Plugin Gradle para gerar código que garante navegação segura com argumentos.
- Navigation Graph: Recurso XML que descreve todos os destinos e ligações.
<!-- res/navigation/nav_graph.xml -->
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/homeFragment">
<fragment
android:id="@+id/homeFragment"
android:name="com.example.HomeFragment"
android:label="Home"
tools:layout="@layout/fragment_home">
<action
android:id="@+id/action_homeFragment_to_detailFragment"
app:destination="@id/detailFragment" />
</fragment>
<fragment
android:id="@+id/detailFragment"
android:name="com.example.DetailFragment"
android:label="Detail"
tools:layout="@layout/fragment_detail">
<argument
android:name="itemId"
app:argType="integer" />
</fragment>
</navigation>
// Navegação usando Safe Args
findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToDetailFragment(itemId = 123))
Alternativas (menos preferidas):
- Intent: Método clássico para navegação entre Activity. Menos flexível e mais difícil de gerir em cenários complexos.
- FragmentTransaction: Para gestão manual de adição, remoção e substituição de fragments. Requer mais código e é propenso a erros.
- Soluções personalizadas: Implementações próprias de gestão de telas, muitas vezes desnecessariamente complexas.