domingo, 8 de junho de 2025

UFCD 5423 - Navegação básica em aplicativos Android Nativo com XML

 





Navegação básica em aplicativos Android Nativo com XML

Aqui temos o código fonte de um tutorial gravado em vídeo disponibilizado gratuitamente no youtube: https://www.youtube.com/watch?v=xqEmM2u15JQ&list=PLkwgaJSkQE70-JUYbS0qfT56P35aaHDfp

Cópia de Sem nome

Nesse repositório está disponível o código do tutorial de 3 etapas, sobre navegação, passagem de parâmetros e de objetos entre telas usando o Intent em um aplicativo Android Nativo com XML.

Código básico para navegação entre Telas:

Crie uma intent.

Essa intent precisa de dois parâmetros:

  • O contexto e a Activity de destino no caso o contexto dentro de uma Activity é o "this".
  • E a Activity de destino, que deve ser colocada com o nome seguido de ::class.java, como no exemplo "HomeActivity::class.java"

Por fim, use o startActivity, passando a intent criada.

A ação de navegação pode ser feita por se chamar esse trecho de código no clique de um botão, por exemplo.

val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)

Link do tutorial: https://www.youtube.com/watch?v=xqEmM2u15JQ&t=3s

Código básico para passar parâmetros entre telas:

Com uma Intent já criada, adicione o parâmetro que deseja enviar a segunda tela usando um putExtra: O putExtra funciona com o uso de chave/valor. A chave é um valor em String que vai identificar o parâmetro enviado na tela seguinte. O valor é o parâmetro em si, que pode ser por exemplo uma String, um Boolean, um Float e etc…

val name = "Diego"

val intent = Intent(this, HomeActivity::class.java)
intent.putExtra("name", name)
startActivity(intent)

Na tela de destino use a Intent para receber o valor que foi enviado: Use intent.get o tipo de dado enviado no parâmetro, por exemplo intent.getStringExtra para String, intent.getIntExtra para Inteiro, intent.getBooleanExtra para boleano e etc… em alguns casos é necessário definir um valor padrão como por exemplo intent.getIntExtra("age", 10) No get[TIPO]Extra, você usa a mesma chave usada para enviar o parâmetro, como por exemplo intent.getStringExtra("name")

val name = intent.getStringExtra("name")

É possível enviar e receber vários parâmetros na mesma Intent, para isso basta acrescentar novos putExtra a sua intent. Exemplo:

val name = "Diego"
val age = 100
val isSubscribe = true
val score = 100000.00

val intent = Intent(this, HomeActivity::class.java)
intent.putExtra("name", name)
intent.putExtra("age", age)
intent.putExtra("isSubscribe", isSubscribe)
intent.putExtra("score", score)
startActivity(intent)

Link do tutorial: https://www.youtube.com/watch?v=gEvjCxe3ZBc

Código básico para passar objetos entre telas:

Com uma Intent já criada, adicione o objeto que deseja enviar a segunda tela usando um putExtra: Para que o objeto seja enviado via putextra ele precisa ser serializável

data class User(
    //Atributos do objeto
) : Serializable //Objeto serializável

O objeto sendo Serializable o envio é feito da mesma forma que o envio de um parâmetro qualquer.

val user = User(...atributos do usuário…)

val intent = Intent(this, HomeActivity::class.java)
intent.putExtra("user", user)
startActivity(intent)

Na tela de destino use a Intent para receber o objeto que foi enviado: É necessário fazer um Cast pro objeto, já que o intet.getSerializableExtra é genérico. Por exemplo intent.getSerializableExtra("user") as User

val user = intent.getSerializableExtra("user") as User

Link do tutorial: https://www.youtube.com/watch?v=OWGOlmVZeyk

Observações importantes

Essa é a forma básica de navegar, passar parâmetros e objetos entre telas em aplicativos Android Nativo XML. Porém não necessariamente é a melhor em especial se tratando de objetos já que getSerializableExtra está deprecated.

De qualquer forma é importante conhecer e entender como trabalhar com Intent, em especial em aplicativos com XML (que ainda são maioria na data que escrevo essa documentação).

Trabalhando com apps Android XML por exemplo existe a possibilidade de trabalhar com o Jetpack Navigation, para navegação, passagem de parâmetros e etc…

Para aplicativos novos, é recomendável o uso do Jetpack Compose.

Projeto com código para navegação com Jetpack Compose: https://github.com/DiegoLinks/compose-navigation

Vídeos tutoriais para navegação com Jetpack Compose: https://www.youtube.com/watch?v=MWtzPxftX_s&list=PLkwgaJSkQE72uFrk_wVlvr5JUnHfv2IUx

Nenhum comentário:

Postar um comentário