Android – Como passar dados entre activitys (Bundle/Intent)

Android – Como passar dados entre activitys (Bundle/Intent)

abril 2, 2019 1 Por Gabriel

Um duvida recorrente para quem está no inicio do desenvolvimento de app mobile é a passagem de parâmetros entre activitys, seja uma String, Double, Boolean ou até mesmo um objeto que carrega vários atributos.

Bundle/Intent

Conceito de intent:

Começaremos com o conceito básico de iniciar uma activity a partir da atual. Nós usamos Intent para conseguir isso. Como o nome sugere, Intents são intenções de realizar algo. Logo para iniciar uma atividade utilizamos a intent.

Intent intent = new Intent(this, Activity2.class);

A Intent recebe como primeiro parâmetro o contexto atual da activity que no exemplo acima recebe o this e como segundo parâmetro a Activity de destino.

Passando Strings de uma Activity para outra:

Podemos começar a adicionar dados ao objeto Intent, usamos o método definido na classe Intent putExtra( ) ou putExtras( ) para armazenar determinados dados.

Vamos ver um exemplo de armazenamento de uma string em uma intent

String user_name = "Gabriel Fernandes Lemos";
intent.putExtra("USER_NAME", user_name);

O método putExtra( ) recebe como primeiro parâmetro uma chave que deverá ser invocada novamente na activity de destino que irá receber seu parâmetro. E como segundo parâmetro o valor que você deseja passar, que no caso acima é a variável user_name.

Também podemos usar o método
putExtra()para anexar números inteiros, caracteres e outros tipos de dados.

conforme listado na documentação oficial dos desenvolvedores do Android .

Recuperando dados da Intent:

Feito o processo de armazenar seus dados em uma Intent na Activity 1 você deve programar seu app para recebe-los na activity 2. Para recuperar os dados, usamos o método getExtra( )

O exemplo a seguir mostrará como usar getExtra ( ) na atividade de destino é iniciada.

Intent intent = getIntent();
String user_name = intent.getStringExtra("USER_NAME");
startActivity(intent);

No exemplo acima o método intent recebe o atributo que foi passado e atribui ele a nossa variável String user_name. Lembra da chave citada anteriormente ? O método intent.getStringExtra( ) recebe essa chave para saber qual parâmetro ele deve recuperar.

Como usar o Bundle ?

Você deve ter notado, esta é uma maneira não tão legal e fácil de enviar um grande número de itens. É aqui que usamos os bundles. Bundle é um mapeamento das chaves String. Podemos armazenar qualquer número de pares de valores-chave em um objeto Bundle e simplesmente passar esse objeto pela Intent.

 Bundle extras = new Bundle();
extras.putString("USER_NAME","Gabriel Fernandes Lemos");
extras.putInt("USER_ID", 20);
extras.putIntArray("USER_SELCTIONS", [1, 2, 3, 4, 5]);

Intent intent = new Intent(this, Activity2.class);
intent.putExtras(extras);
startActivity(intent);

Como recuperar um Bundle ?

Para recuperar o parâmetro Bundle também é bem simples, assim como o exemplo anterior. Veja:

Intent intent = getIntent();
Bundle extras = intent.getExtras();
String user_name = extras.getString(“USER_NAME”);

Passando objetos entre activitys com o Bundle

Também podemos passar objetos através das activitys. Para colocar um objeto usamos putSerializabel(“CHAVE”, OBJETO);

Bundle bundle = new Bundle;
bundle.putSerializable("KEY", YOUR_OBJECT);
intent.putExtras(bundle);
startActivity(intent);

Como recuperar objetos Bundle ?

Para recuperar este objeto, na atividade de destino, simplesmente obtemos o serializable e o atribuímos a um objeto do mesmo tipo, tipificando o valor de retorno de getSerializable(“KEY”, DEFAULT)

Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
//Tipo de objeto = (Tipo) bundle.getSerializable("KEY");
DataClass myData = (DataClass) bundle.getSerializable("MY_DATA");

Para mais informações você pode visitar o site oficial do Android para aprender mais sobre IntentputExtra e Bundle. Comente abaixo se você encontrou algum erro, fico feliz em ajudar.

Conclusão:

Passar informações entre uma activity e outra é um processo muito simples no Android porém muito utilizado. Através de poucos métodos conseguimos facilmente implementar de a passagem de parâmetros.

Assim finalizamos o conteúdo. Caso você tenha alguma dica ou dúvida sobre o artigo, deixe logo abaixo nos comentários.

Se curtiu o conteúdo, não esqueça de compartilha-lo. E por fim, não deixe de nos acompanhar nas redes sociais

Instagram: @DevLemos

Grupo no Whatsapp: https://chat.whatsapp.com/KpgX68HShoc9PSuB2OyY0u

Abraços!

Fontes:

https://developer.android.com/reference/android/content/Intent

https://developer.android.com/reference/android/os/Bundle

https://zocada.com/using-intents-extras-pass-data-activities-android-beginners-guide/

https://developer.android.com/reference/android/content/Intent.html

https://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String,%20android.os.Bundle)