Passage de données entre activités lors d'une intention
Il est possible d'envoyer ou de retourner des valeurs entre les activités, nous passerons ses données via l'instance de l'intention en cours entre ces deux activités. Plus exactement via la zone data ou extra data.
Dans l'activité qui vient de créer l'intention, rien de plus simple pour retrouver l'instance de l'intention, mais dans l'activité lancée suite à une intention, il faudra utiliser la méthode getIntent(), méthode permettant de récupérer l'intention à l'origine de notre activité.
Ensuite, connaissant l'instance de l'intention, nous pourrons lire ou envoyer les données:
Soit dans l'extra data
Pour positionner une valeur
Pour cela, nous utiliserons les méthodes putExtra ("clef", "valeur") pour envoyer les données dans l'intention
- putExtra (String name, String value),
- putExtra (String name, int value),
- et tous les autres formats possibles...
Exemple: i.putExtra("MaClef", "MaValeur"); avec i l'instance de l'intention.
Mais il sera aussi possible d'envoyer/recevoir un bundle.
Bundle bundleExtras = new Bundle();
extras.putInt("id", 10);
bundleExtras.putString("nom", “Durand”);
//Attachons le bundle à l'intent
i.putExtras(bundleExtras);
Pour récupérer une valeur
Pour récupérer les données, nous utiliserons les méthodes getExtra() typées:
type valeur=intent.gettypeExtra (String name)
ou name représente le nom clef de la valeur à récupérer
type le type de la valeur récupérée
Par exemple: id=intent.getIntExtra ("id", valeurParDefaut); (valeurParDefaut est la valeur retournée si id n'existe pas)
D'où quelques méthodes disponibles:
public float[] getFloatArrayExtra (String name)
public float getFloatExtra (String name, float defaultValue)
public int getIntExtra (String name, int defaultValue)
...
Soit par data
Eenvoyer des données:
setData(Uri data).
Récupérer ces données:
Uri getData()