Como é feita a navegação em aplicações Android?
sobes.tech IA
Resposta da IA
A navegação em aplicações Android pode ser realizada de várias formas, sendo as mais comuns:
-
Componentes de navegação (Navigation Component): Estrutura recomendada pelo Google para implementar navegação. Utiliza um gráfico de navegação para descrever todas as telas e transições entre elas. Suporta argumentos, links profundos, animações de transição.
// Exemplo de gráfico de navegação <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/nav_graph" app:startDestination="@id/fragmentA"> <fragment android:id="@+id/fragmentA" android:name="com.example.myapp.FragmentA" android:label="Fragmento A"> <action android:id="@+id/action_fragmentA_to_fragmentB" app:destination="@id/fragmentB" /> </fragment> <fragment android:id="@+id/fragmentB" android:name="com.example.myapp.FragmentB" android:label="Fragmento B" /> </navigation>// Exemplo de transição usando Safe Args findNavController().navigate(R.id.action_fragmentA_to_fragmentB) -
Intenções explícitas (Explicit Intents): Usadas para lançar um componente específico (Activity, Service, BroadcastReceiver) na mesma aplicação ou noutra.
// Exemplo de iniciar uma Activity val intent = Intent(this, SettingsActivity::class.java) startActivity(intent) -
Intenções implícitas (Implicit Intents): Declaram a ação a realizar e os dados com que essa ação deve ser realizada. O sistema Android encontra o componente adequado para tratar essa intenção.
// Exemplo de abrir uma página web val webpage = Uri.parse("http://www.android.com") val intent = Intent(Intent.ACTION_VIEW, webpage) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } -
Gestão da pilha de retrocesso (Back Stack): O sistema Android mantém uma pilha de retrocesso que gere a história de navegação. O botão "Voltar" leva o utilizador ao item anterior na pilha.
-
BottomNavigationView: Componente UI para navegação entre destinos principais na aplicação.
-
DrawerLayout (Navigation Drawer): Painel lateral deslizante com itens de menu para navegação.
Cada método tem as suas vantagens e cenários de uso. O componente de navegação é preferido para gerir a navegação entre fragmentos e atividades dentro de uma mesma aplicação, proporcionando uma abordagem unificada e simplificando o trabalho com a pilha de retrocesso e argumentos. As intenções são usadas para lançar outros componentes e interagir com outras aplicações.