III. le concept d’Activité / l’objet...
Transcript of III. le concept d’Activité / l’objet...
Programmation AndroidIII. le concept d’Activité / l’objet
Intent
1 / 42Cours Android - F. Michel
N
Plan
1 La notion d’activité
2 Ajout d’une activité
3 Lancement d’une activité
4 L’objet android.content.Intent.Intent
5 Implicit Intent
2 / 42Cours Android - F. Michel
N
La notion d’activité
Activity
Définition
Une activité (sous classe d’Activity) représente un unique écran del’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, uneactivité pour la lecture, indépendante l’une de l’autre.
Ces activités peuvent être lancées par d’autres applications. Parexemple 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 descomposants présents dans le système, et donc notamment ndesdifférentes activités fournies par les applications.
4 / 42Cours Android - F. Michel
N
La notion d’activité
Définition des activités d’une application
AndroidManifest.xml :
5 / 42Cours Android - F. Michel
N
Ajout d’une activité
Étape 1 : ajout dans le manifest
AndroidManifest.xml :
7 / 42Cours Android - F. Michel
N
Ajout d’une activité
Étape 2 : création de la classe implémen-tant l’activité
8 / 42Cours Android - F. Michel
N
Ajout d’une activité
Étape 2 : résultat
DisplayMessageActivity.java
9 / 42Cours Android - F. Michel
N
Ajout d’une activité
Étape 3 : création de l’UI de l’activité àl’aide d’un nouveau fichier XML (layout)
10 / 42Cours Android - F. Michel
N
Ajout d’une activité
Étape 3 : création de l’UI de l’activité
11 / 42Cours Android - F. Michel
N
Ajout d’une activité
Étape 3 : ajout d’un champ texte
12 / 42Cours Android - F. Michel
N
Ajout d’une activité
Étape 4 : connecter l’activité à sa vue4.1 : ajout de la méthode onCreate
DisplayMessageActivity.java
13 / 42Cours Android - F. Michel
N
Ajout d’une activité
Étape 4 : connecter l’activité à sa vue4.2 : spécification de la vue à utiliser
Méthode setContentView
14 / 42Cours Android - F. Michel
N
Ajout d’une activité
Étape 4 : connecter l’activité à sa vue4.2 : spécification de la vue à utiliser
Récupération de l’identifiant généré automatique-ment via la classe R.layout
15 / 42Cours Android - F. Michel
N
Lancement d’une activité
Rappel : activité Main (cours précédent)
17 / 42Cours Android - F. Michel
N
Lancement d’une activité
Exemple : à partir d’un bouton placé dansl’activité principale
Rappel : gestion clique solution 2
18 / 42Cours Android - F. Michel
N
Lancement d’une activité
Lancement de l’activité
Méthode android.app.Activity.startActivity(Intent)
19 / 42Cours Android - F. Michel
N
Lancement d’une activité
Lancement de l’activité
Création d’un Intent explicite, utilisation du constructeurandroid.content.Intent.Intent(Context, Class<?>)
20 / 42Cours Android - F. Michel
N
Lancement d’une activité
Lancement de l’activité
Création d’un Intent, utilisation du constructeurandroid.content.Intent.Intent(Context, Class<?>)
21 / 42Cours Android - F. Michel
N
Lancement d’une activité
Résultat : DisplayMessageActivity est dé-marée au clique sur le bouton send
⇒
22 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
À 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 enutilisant d’autres éléments du système (e.g. une autre activité)
android.content.Intent.Intent(Context, Class<?>)
paramètre 1 : un objet de type android.content.Context.android.app.Activity est sous classe de contexte
paramètre 2 : un objet de type java.lang.Class : la classecorrespondant au composant visé, e.g. une activité
24 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
À propos de l’objet Intent
L’activité principale est démarée grâce à un Intent
25 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
Communication de données via un Intent
android.content.Intent.putExtra(String, String)
26 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
Affichage des données transférées dansDisplayMessageActivity
⇒
27 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
Transfert des données de la vue
28 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
Transfert des données de la vue
⇒
29 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
Création d’une vue dans le code Java :nouvelle activité AfficheMessage
30 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
Transfert des données à AfficheMessageModification de MainActivity.java
31 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
Problème! ! !
32 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
Problème → LogCat en mode debug
33 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
Modification AndroidManifest.xml
34 / 42Cours Android - F. Michel
N
L’objet android.content.Intent.Intent
Transfert des données à AfficheMessage
⇒
35 / 42Cours Android - F. MichelN
Implicit Intent
Intent implicite
Objectif d’un Intent implicite
Permet de demander au système de réaliser une action particulièresans viser une Activité spécifique
Lors de l’utilisation, Android cherche parmi les activités qui se sontenregistrées comme capable de gérer cette demande (manifest)
Si plusieurs activitées sont trouvées, il est automatiquementdemandé à l’utilisateur de choisir (“ouvrir avec”)
Exemples :
affichage d’une page webcomposition d’un mail
37 / 42Cours Android - F. Michel
N
Implicit Intent
Exemple : ActionView (générique)
38 / 42Cours Android - F. Michel
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érerl’action demandée
si aucun composant ne peut gérer une demande, l’applicationinitiatrice plante !
39 / 42Cours Android - F. Michel
N
Implicit Intent
Enregistrer une activité comme capable degérer un Intent
Nouvelle activité : AfficheURL
40 / 42Cours Android - F. Michel
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. Action.SEND,Action.VIEW)
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é (pardéfaut : DEFAULT)
41 / 42Cours Android - F. Michel
N
Implicit Intent
Résumé global
Activity
définition : manifest Androidcréation / implémentation : extends android.app.Activitylancement : android.app.Activity.startActivity(Intent)
Intent
explicite : lancement d’une activité spécifiqueimplicite : demande de lancement d’un servicecommunication entre activités : android.content.Intent.putExtra(K,V)
Ce cours reprend largement les tutoriaux en ligne proposés par Google : Android developers
42 / 42Cours Android - F. Michel
N