Sobes.tech
Junior

Que métodos de navegação no Android conhece?

sobes.tech IA

Resposta da IA

Existem várias formas principais de navegação no Android:

  • Para cima (Voltar um nível): Geralmente implementado com um botão de seta na ActionBar/Toolbar. Leva o utilizador de volta ao ecrã anterior na hierarquia lógica da aplicação.
  • Voltar (Voltar): Implementado com o botão do sistema "Voltar". Leva o utilizador de volta ao ecrã anterior que visitou.
  • Início (Início): Retorno ao ecrã principal da aplicação ou do dispositivo.
  • Links profundos (Deep Links): Acesso direto a um ecrã ou recurso específico dentro da aplicação através de um link. Podem ser criados a partir de fontes externas (web, outras aplicações) ou dentro da própria aplicação.
  • Cofre de navegação (Navigation Drawer): Painel lateral deslizante que contém links para diferentes secções da aplicação.
  • Barra de navegação inferior (Bottom Navigation Bar): Painel na parte inferior do ecrã que permite alternar rapidamente entre as principais secções da aplicação.

Principais abordagens para implementar a navegação:

  • Uso de startActivityForResult e onActivityResult: Método obsoleto para passar dados entre atividades.
  • Passar dados através de Extras no Intent: Forma simples de transferir dados primitivos e objetos serializáveis/parceáveis entre atividades.
  • FragmentTransaction: Gestão de fragmentos (adicionar, substituir, eliminar, etc.) para navegação dentro de uma atividade.
  • Componente de Navegação (Navigation Component): Biblioteca oficial do Google que simplifica a implementação de navegação entre diferentes componentes da aplicação (Atividade, Fragmento, Vistas personalizadas). Oferece um editor gráfico de gráficos de navegação, transferência de argumentos e gestão da pilha de retrocesso.
// Exemplo de navegação com Navigation Component
findNavController().navigate(R.id.action_currentFragment_to_nextFragment)

// Transferência de argumentos com Navigation Component
val bundle = Bundle()
bundle.putString("key", "value")
findNavController().navigate(R.id.action_currentFragment_to_nextFragment, bundle)