Android 09 : transmettre des données entre activités

Prolonger le chapitre sur les intents avec un exemple Java pour une application NKILItech utilisant les vues Android classiques.

Chapitre rédigé pour compléter cette ancienne adresse. Les exemples et exercices ci-dessous sont originaux.

1. Définir un contrat entre écrans

L’écran A connaît le titre de la formation. Il ouvre B avec une clé stable. B vérifie la valeur reçue et prévoit un cas manquant. Les deux activités doivent appartenir à votre application ; déclarez-les dans le manifeste. Pour une activité interne, gardez android:exported="false".

Schéma des étapesActivité A : sélectionner une formation puis Intent explicite + clé formation puis Activité B : lire et valider la valeurActivité A : sélectionner une formationIntent explicite + clé formationActivité B : lire et valider la valeur
Schéma pédagogique original PandaCodeur.

2. Émettre puis lire une valeur

// Dans une méthode de votre activité A
Intent intent = new Intent(this, DetailActivity.class);
intent.putExtra("formation", "Réseaux de Pétri");
startActivity(intent);
package com.nkilitech.demo;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class DetailActivity extends Activity {
    @Override public void onCreate(Bundle state) {
        super.onCreate(state);
        String titre = getIntent().getStringExtra("formation");
        if (titre == null || titre.trim().isEmpty()) {
            titre = "Formation non précisée";
        }
        TextView texte = new TextView(this);
        texte.setText(titre);
        texte.setTextSize(22);
        setContentView(texte);
    }
}

Cette classe s’intègre dans un projet Android Java : ce n’est pas un programme Java de console. Le TextView est créé en Java pour rendre l’exemple indépendant d’un fichier de mise en page.

3. Penser au cycle de vie

Un écran peut être recréé lors d’un changement de configuration. Les champs de l’ancienne instance ne constituent donc pas une sauvegarde durable. Pour un petit état d’interface, utilisez le mécanisme de sauvegarde d’état ; pour les données métier persistantes, utilisez une solution de stockage adaptée. Évitez d’envoyer de grosses images dans les extras : transmettez plutôt une référence contrôlée.

4. Exercices corrigés

Les deux écrans utilisent formation et Formation. Que se passe-t-il ?

Voir le corrigé expliqué

Ce sont deux clés différentes. Centralisez la clé dans une constante et gardez le comportement de repli lorsque la donnée est absente.

Pourquoi ne pas envoyer le mot de passe dans un intent ?

Voir le corrigé expliqué

Le second écran n’en a pas besoin pour afficher une formation. Réduisez les données transférées aux informations nécessaires ; une session authentifiée doit être gérée par l’architecture de l’application.

Quelle vérification manuelle effectuer ?

Voir le corrigé expliqué

Ouvrez B avec une valeur, sans valeur, puis après rotation de l’écran. Le titre doit rester compréhensible et l’application ne doit pas planter.

Référence : Android Developers : cycle de vie.