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
startActivityForResulteonActivityResult: 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)