Correction programmation mobile 04 : activités et interface Android
Correction construite à partir du sujet local et de son schéma original. Les numéros ci-dessous correspondent à ce schéma, qui a été relu avant la rédaction.
Énoncé et barème
Lire le sujet original. Trois parties : connaissances 6 points, cycle de vie 7 points, interface 7 points.
Exercice 1 : questions de cours
Activité, framework et intent
Voir le corrigé expliqué
Une activité est un composant Android qui fournit un point d’interaction avec l’utilisateur. Un framework organise des composants et leur cycle d’exécution ; Android et Flutter sont deux exemples de cadres de développement mobile. Un intent exprime une opération : explicite, il nomme un composant ; implicite, il décrit une action que le système doit résoudre.
Plateforme, système et boutiques
Voir le corrigé expliqué
Le système gère notamment les processus, la mémoire et les périphériques. La plateforme inclut aussi SDK, outils et mécanismes de distribution. Android et iOS désignent des systèmes et, par extension, leurs écosystèmes. Dans le contexte historique du sujet : Google Play, App Store et Windows Phone Marketplace. « Windows7 » doit ici être compris comme Windows Phone 7, pas le système Windows de bureau.
Exercice 2 : lecture du schéma

Retrouver les quatre méthodes
Voir le corrigé expliqué
1 = onCreate(), 2 = onStart(), 3 = onPause(), 4 = onDestroy(). onStart correspond à la visibilité ; onResume à l’état repris, prêt pour l’interaction.
Quelle méthode implémenter et comment conserver l’état ?
Voir le corrigé expliqué
Dans une activité habituelle, on surcharge onCreate pour initialiser l’interface et on appelle super. Ce n’est pas une obligation abstraite du langage Java : la classe de base possède une implémentation. Un petit état d’interface peut être sauvegardé dans le Bundle avec onSaveInstanceState, puis relu à la création. Ne comptez pas sur onDestroy pour une sauvegarde indispensable : un processus peut disparaître sans cet appel.
Communication et menus
Voir le corrigé expliqué
Un intent explicite peut transmettre de petites données par extras. Avec les vues classiques, on définit les éléments du menu dans res/menu, on les charge avec getMenuInflater().inflate depuis onCreateOptionsMenu et on traite leur identifiant dans onOptionsItemSelected. Une barre d’application doit être configurée pour les afficher.
Exercice 3 : réponses sur l’interface
Dossier XML et callback recherche
Voir le corrigé expliqué
Le fichier de mise en page se place dans res/layout. Pour l’attribut XML android:onClick="recherche", le callback historique attendu est public void recherche(View view) dans le contexte adapté. Une alternative consiste à installer un écouteur en Java.
Clic long et durée du Toast
Voir le corrigé expliqué
b1.setOnLongClickListener(view -> {
Toast.makeText(MonActivity.this, "long clic!", Toast.LENGTH_SHORT).show();
return true;
});Le booléen vrai indique que l’événement est consommé. L’argument de durée du Toast n’est pas une durée libre en millisecondes : on utilise LENGTH_SHORT ou LENGTH_LONG, pas 1000.
Saisie de texte et barre de progression
Voir le corrigé expliqué
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ed"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="text"
android:textColor="#16222E" />EditText permet une saisie modifiable. Les deux dimensions match_parent répondent littéralement à la consigne ; dans un formulaire réel, la hauteur wrap_content est souvent plus adaptée. findViewById(R.id.progBar) retrouve la vue d’identifiant @+id/progBar ; la variable pb est de type ProgressBar. Il faut appeler setContentView avant cette recherche.
Exemple complet de clic long sans fichier XML
package com.nkilitech.demo;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.Toast;
public class MonActivity extends Activity {
@Override public void onCreate(Bundle state) {
super.onCreate(state);
Button b1 = new Button(this);
b1.setText("Recherche");
b1.setOnLongClickListener(view -> {
Toast.makeText(this, "long clic!", Toast.LENGTH_SHORT).show();
return true;
});
setContentView(b1);
}
}Déclarez cette activité dans le manifeste d’un projet Android Java. Essayez un clic court puis un appui long : seul le second déclenche cet écouteur.
Référence : Android Developers : cycle de vie.
Référence : Android Developers : menus.