Sobes.tech
Junior

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.