Programmation Android
III. le concept d’Activité / l’objet
Intent
Cours Android - F. Michel
1 / 42
N
Plan
1 La notion d’activité
2 Ajout d’une activité
3 Lancement d’une activité
4 L’objet [Link]
5 Implicit Intent
Cours Android - F. Michel
2 / 42
N
La notion d’activité
Activity
Définition
Une activité (sous classe d’Activity) représente un unique écran de
l’UI d’une application Android
Une application contient en général plusieurs activités. Par exemple,
une application de courriel : une activité pour la composition, une
activité pour la lecture, indépendante l’une de l’autre.
Ces activités peuvent être lancées par d’autres applications. Par
exemple pour partager une image (gallery app) via un courriel
(mailer app)
Tout l’intérêt d’Android est de faciliter l’utilisation de l’ensemble des
composants présents dans le système, et donc notamment ndes
différentes activités fournies par les applications.
Cours Android - F. Michel
4 / 42
N
La notion d’activité
Définition des activités d’une application
[Link] :
Cours Android - F. Michel
5 / 42
N
Ajout d’une activité
Étape 1 : ajout dans le manifest
[Link] :
Cours Android - F. Michel
7 / 42
N
Ajout d’une activité
Étape 2 : création de la classe implémen-
tant l’activité
Cours Android - F. Michel
8 / 42
N
Ajout d’une activité
Étape 2 : résultat
[Link]
Cours Android - F. Michel
9 / 42
N
Ajout d’une activité
Étape 3 : création de l’UI de l’activité à
l’aide d’un nouveau fichier XML (layout)
Cours Android - F. Michel
10 / 42
N
Ajout d’une activité
Étape 3 : création de l’UI de l’activité
Cours Android - F. Michel
11 / 42
N
Ajout d’une activité
Étape 3 : ajout d’un champ texte
Cours Android - F. Michel
12 / 42
N
Ajout d’une activité
Étape 4 : connecter l’activité à sa vue
4.1 : ajout de la méthode onCreate
[Link]
Cours Android - F. Michel
13 / 42
N
Ajout d’une activité
Étape 4 : connecter l’activité à sa vue
4.2 : spécification de la vue à utiliser
Méthode setContentView
Cours Android - F. Michel
14 / 42
N
Ajout d’une activité
Étape 4 : connecter l’activité à sa vue
4.2 : spécification de la vue à utiliser
Récupération de l’identifiant généré automatique-
ment via la classe [Link]
Cours Android - F. Michel
15 / 42
N
Lancement d’une activité
Rappel : activité Main (cours précédent)
Cours Android - F. Michel
17 / 42
N
Lancement d’une activité
Exemple : à partir d’un bouton placé dans
l’activité principale
Rappel : gestion clique solution 2
Cours Android - F. Michel
18 / 42
N
Lancement d’une activité
Lancement de l’activité
Méthode [Link](Intent)
Cours Android - F. Michel
19 / 42
N
Lancement d’une activité
Lancement de l’activité
Création d’un Intent explicite, utilisation du constructeur
[Link](Context, Class<?>)
Cours Android - F. Michel
20 / 42
N
Lancement d’une activité
Lancement de l’activité
Création d’un Intent, utilisation du constructeur
[Link](Context, Class<?>)
Cours Android - F. Michel
21 / 42
N
Lancement d’une activité
Résultat : DisplayMessageActivity est dé-
marée au clique sur le bouton send
Cours Android - F. Michel
22 / 42
N
L’objet [Link]
À propos de l’objet Intent
Principes d’un Intent
moyen de lier deux composants (2 activités par exemple)
représente pour une application le désir de faire quelque chose en
utilisant d’autres éléments du système (e.g. une autre activité)
[Link](Context, Class< ?>)
paramètre 1 : un objet de type [Link].
[Link] est sous classe de contexte
paramètre 2 : un objet de type [Link] : la classe
correspondant au composant visé, e.g. une activité
Cours Android - F. Michel
24 / 42
N
L’objet [Link]
À propos de l’objet Intent
L’activité principale est démarée grâce à un Intent
Cours Android - F. Michel
25 / 42
N
L’objet [Link]
Communication de données via un Intent
[Link](String, String)
Cours Android - F. Michel
26 / 42
N
L’objet [Link]
Affichage des données transférées dans
DisplayMessageActivity
Cours Android - F. Michel
27 / 42
N
L’objet [Link]
Transfert des données de la vue
Cours Android - F. Michel
28 / 42
N
L’objet [Link]
Transfert des données de la vue
Cours Android - F. Michel
29 / 42
N
L’objet [Link]
Création d’une vue dans le code Java :
nouvelle activité AfficheMessage
Cours Android - F. Michel
30 / 42
N
L’objet [Link]
Transfert des données à AfficheMessage
Modification de [Link]
Cours Android - F. Michel
31 / 42
N
L’objet [Link]
Problème ! ! !
Cours Android - F. Michel
32 / 42
N
L’objet [Link]
Problème → LogCat en mode debug
Cours Android - F. Michel
33 / 42
N
L’objet [Link]
Modification [Link]
Cours Android - F. Michel
34 / 42
N
L’objet [Link]
Transfert des données à AfficheMessage
Cours Android - F. Michel
35 / 42
N
Implicit Intent
Intent implicite
Objectif d’un Intent implicite
Permet de demander au système de réaliser une action particulière
sans viser une Activité spécifique
Lors de l’utilisation, Android cherche parmi les activités qui se sont
enregistrées comme capable de gérer cette demande (manifest)
Si plusieurs activitées sont trouvées, il est automatiquement
demandé à l’utilisateur de choisir (“ouvrir avec”)
Exemples :
affichage d’une page web
composition d’un mail
Cours Android - F. Michel
37 / 42
N
Implicit Intent
Exemple : ActionView (générique)
Cours Android - F. Michel
38 / 42
N
Implicit Intent
Précaution d’emploi
Vérification de la disponibilité d’un composant adéquat
Il est préférable de vérifier que le système est capable de gérer
l’action demandée
si aucun composant ne peut gérer une demande, l’application
initiatrice plante !
Cours Android - F. Michel
39 / 42
N
Implicit Intent
Enregistrer une activité comme capable de
gérer un Intent
Nouvelle activité : AfficheURL
Cours Android - F. Michel
40 / 42
N
Implicit Intent
Définition d’un intent-filter dans le mani-
fest
intent-filter
action : type d’action gérée par l’activité (e.g. [Link],
[Link])
data : le type de donnée que l’activité peut gérer (e.g.
android :mimeType, android :scheme)
category : permet de spécifier plus avant le type de l’activité (par
défaut : DEFAULT)
Cours Android - F. Michel
41 / 42
N
Implicit Intent
Résumé global
Activity
définition : manifest Android
création / implémentation : extends [Link]
lancement : [Link](Intent)
Intent
explicite : lancement d’une activité spécifique
implicite : demande de lancement d’un service
communication entre activités : [Link](K,V)
Ce cours reprend largement les tutoriaux en ligne proposés par Google : Android developers
Cours Android - F. Michel
42 / 42
N