17
2010
[Tutoriel Android] Partie 2 – Intent et Listener
Mes premiers pas sous Android
Bonjour à tous et bienvenue pour un nouveau tutoriel sur la plateforme Android, nous allons débuter ce cours par un rapide récapitulatif des fonctions primordiales.
Tout d’abord, l’utilisation des listener qui seront utilisés pour définir les actions de nos éléments sur l’interface graphique, puis l’utilisation des intents.
Qu’est-ce qu’un Listener ?
Un listener en français se traduit par un écouteur, vous allez me dire : ouais c’est bien mais ça écoute quoi ? Un écouteur, comme son nom l’indique, écoute une source jusqu’à ce qu’elle soit utilisée.
Pour qu’une action soit réalisée, il faut qu’un émetteur envoie un signal dans le canal d’écoute pour que le listener se déclenche.
Action : Clique sur un bouton
Listener : Ecoute si le bouton est cliqué
Il n’y a pas plus simple que cela, nous verrons un peu plus bas dans les exemples comment mettre en application un listener.
Qu’est-ce qu’un Intent ?
Les intents sont l’une des pierres angulaires de la plateforme. Nous pouvons les comparer à des actions ou même à des intentions, ils permettent de dialoguer à travers le système à partir de canaux qui leurs sont dédiés. Quand votre mobile reçoit un appel, la plateforme lance un Intent signalant l’arrivée d’un appel, de même pour un sms. Nous les utiliserons dans nos applications pour dialoguer à l’intérieur de celle-ci (changement d’écran) ou avec le système (intercepter des sms et autres).
C’est un mécanisme complexe mais très efficace, je vous renvois à la documentation pour plus de renseignements (en Anglais).
http://developer.android.com/reference/android/content/Intent.html
Création de notre projet
Comme dans le tutoriel précédent, grâce à Eclipse et ADT, créez un nouveau projet. Nous allons commencer par éditer le fichier « main.xml » qui se situe dans le dossier « res/layout ».
Sa syntaxe actuelle est celle-ci :
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
Nous allons enlever le textview et le remplacer par un button pour voir le fonctionnement des listener.
Nous nous retrouvons alors avec la syntaxe suivante :
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/buttonToast" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Cliquez ici !"> </Button> </LinearLayout>
Le bouton dispose d’un id (identifiant) unique, qui sera utilisé pour le retrouver et l’appeler dans notre code source. Il prendra toute la place disponible en largeur et seulement la place nécessaire en hauteur, ainsi qu’un texte « Cliquez ici ! ».
Vous pouvez utiliser l’onglet « Layout » situé en bas pour créer graphiquement l’interface, mais une connaissance syntaxique du code XML permet d’appréhender plus facilement les interfaces plus complexes que nous verrons dans les prochains tutoriaux.
Ouvrez le fichier « MonActivite.java » qui se trouve à l’emplacement « src/com.formation », le code est celui-ci :
package com.formation;
import android.app.Activity;
import android.os.Bundle;
public class MonActivite extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Actuellement, si nous lançons l’application et que l’on clique sur le bouton : rien ne se passera. Pour régler ceci, nous allons rajouter du code pour définir l’action et c’est là que les listeners rentrent en jeu.
Nous ne pouvons pas directement appeler notre bouton dans notre activité, il faut pour cela aller le chercher dans le fichier XML, son id est alors utilisé.
Une activité dispose d’une méthode findViewById pour appeler un élément de la vue, avec en paramètre l’identifiant de l’objet que l’on souhaite appeler. Celui-ci est stocké dans le ResourcesManager qui se nomme R.
Button monBouton = (Button)findViewById(R.id.buttonToast);
Nous nous retrouvons alors avec une instance de notre bouton dans notre code directement utilisable. Nous allons utiliser une méthode de celui-ci pour exécuter une action lorsque l’on clique dessus, la méthode setOnClickListener est notre amie.
Cette méthode prend en paramètre un OnClickListener, notre application ne diposant pas de cette instance, nous allons lui en attribuer une comme ceci :
monBouton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
Cette interface implémente directement la méthode onClick, avec en paramètre la vue utilisée, ici notre bouton.
Nous allons rajouter un petit message à afficher lorsque l’on clique sur le bouton, les messages s’affichent via une classe nommée Toast (Hmm c’est bon les toast :lol: ).
La classe Toast dispose d’une méthode statique (pas besoin d’instancier l’objet pour utiliser ses méthodes) de type makeText, qui prend en paramètres le contexte qui se trouvera être notre application, puis un message et pour finir une durée.
La durée peut être Toast.LENGTH_SHORT ou encore Toast.LENGTH_LONG.
@Override
public void onClick(View v) {
Toast.makeText(MonActivite.this, "Coucou !", Toast.LENGTH_SHORT).show();
}
Lancez l’application et regardez le message s’afficher lorsque l’on clique sur le bouton.
Que c’est chouette tout ça! Je vais vous montrer une autre méthode pour gérer les listeners, je la trouve plus propre car cela évite de mettre tout le code dans un seul endroit.
Nous allons tout d’abord rajouter une interface à notre activité de type OnClickListener (mot clé implements en java).
public class MonActivite extends Activity implements OnClickListener
Puis normalement, Eclipse vous propose de rajouter les méthodes non implémentées dans notre classe.
@Override
public void onClick(View v) {
}
Nous allons rajouter du code à cette méthode, comme suit, ce qui devrait nous donner quelque chose de ce genre :
public class MonActivite extends Activity implements OnClickListener {
Button monBouton = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
monBouton = (Button)findViewById(R.id.buttonToast);
// On spécifie que le le listener est notre classe
monBouton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// Vérification de la vue cliquée
if(v == monBouton) {
Toast.makeText(this, "Coucou n°2", Toast.LENGTH_SHORT).show();
}
}
}
On se retrouve bien avec deux sections : l’une servant à la création de notre application et la deuxième à la gestion des cliques sur les divers éléments de l’interface.
Nous allons étoffer un peu plus notre application avec un changement d’écran lorsque l’on appuit sur notre bouton.
Commençons par créer une nouvelle activité nommée « MonAutreActivite », héritant de la classe Activity du package « android.app.Activity ».
Créons aussi un nouveau layout grâce à l’icône de la barre de menu ADT (3ème du carré rouge !).
Nous rajouterons un textview à ce Layout.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Coucou ! Ma deuxiéme activité" ></TextView> </LinearLayout>
Ps : N’oubliez pas de rajouter un setContentView(R.layout.layoutcoucou); à votre deuxième activité pour lui attribuer le layout créé.
Lorsque l’on rajoute une activité à notre application, il faut la déclarer dans notre fichier AndroidManifest.xml sinon vous vous retrouverez avec une erreur.
Ouvrez le fichier XML et rendez-vous dans l’onglet Application, en bas de notre utilitaire de configuration assisté par ADT. On retrouve notre activité principale, pour en rajouter une nouvelle cliquez sur « ADD » et choisissez « Activity » ; sur la droite s’ouvre un petit panneau permettant de rajouter des informations primordiales à l’utilisation de notre activité. Le champ « Name » permet de spécifier le nom de classe de notre activité, cliquez dessus et choisissez notre deuxième activité.
Vous pouvez aussi lui spécifier un « label » pour lui attribuer un nom.
Je vous mets à disposition le code XML du fichier AndroidManisfest.xml :
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.formation" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MonActivite" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="MonAutreActivite" android:label="@string/app_name"></activity> </application> <uses-sdk android:minSdkVersion="7" /> </manifest>
Revenons à notre activité principale et dans la méthode « onClick », nous allons modifier le code pour pouvoir appeler notre deuxième activité.
Pour lancer une activité, il faut utiliser un Intent qui se chargera de faire le lancement de l’activité à travers la plateforme Android.
Un intent prend en paramètre deux options : le contexte (notre activité) et l’activité de destination.
Regardez la documentation des intent pour plus d’options à ce niveau.
La méthode startActivity qui prend en paramètre un Intent, nous servira à lancer l’activité demandée.
@Override
public void onClick(View v) {
if(v == monBouton) {
Intent monIntent = new Intent(this,MonAutreActivite.class);
startActivity(monIntent);
}
}
Lancez l’application et cliquez sur le bouton, la deuxième activité se lance alors, le bouton retour permet de revenir à l’activité précédente.
Nous voilà arrivé à la fin de notre tutoriel, dans la 3 ème partie nous nous pencherons sur l’utilisation plus poussée des intents que sur la méthode startActivityForResult(intent, requestCode) ;
A la prochaine pour un nouveau tutoriel sur la plateforme Android.
Articles relatifs
-
http://www.neroid.info JCDusse1981
-
http://www.neroid.info JCDusse1981
-
http://SiteWeb Quentin
-
http://SiteWeb Alexis
-
http://SiteWeb Alexis
-
http://SiteWeb Alexis
-
http://SiteWeb Alexis
-
http://SiteWeb Alexis
-
http://SiteWeb Neuromancien
-
http://SiteWeb Neuromancien
-
http://SiteWeb Neuromancien
-
http://www.morengi.com Oussama
-
http://SiteWeb Hataka_Fuusen
-
http://SiteWeb Toneo
-
http://SiteWeb Elion
-
http://SiteWeb Elion
-
http://SiteWeb Alban06
-
http://SiteWeb Alban06
-
http://SiteWeb Alban06
-
http://SiteWeb jeanjean69
-
http://SiteWeb manita
-
http://SiteWeb Brucella
-
http://SiteWeb Brucella
-
http://SiteWeb Brucella
-
http://SiteWeb FKS
-
http://SiteWeb drouchek
-
http://SiteWeb Grattmandu03
-
http://SiteWeb Arnaud
-
http://SiteWeb Arnaud
-
Alexis
-
Alexis
-
Alexis
-
Alexis
-
benjamin notteghem
Survie
Catégories
- Andengine (5)
- Android (20)
- Application (1)
- Articles (1)
- Non classé (2)
- Programmation (30)
Nuage
Commentaires récents
- Paumé dans [Tutoriel Honeycomb] Partie 1 – Les actions bars
- Acesyde dans [Tutoriel android] Partie 3 – Une petite intention ?
- paul dans [Tutoriel Honeycomb] Partie 1 – Les actions bars
- Sne dans [Tutoriel android] Partie 3 – Une petite intention ?
- Vivien-57 dans [Tutoriel Android] Partie 13 – L’appareil photo
Archives
- janvier 2012 (2)
- novembre 2011 (1)
- octobre 2011 (3)
- juillet 2011 (3)
- juin 2011 (1)
- décembre 2010 (4)
- octobre 2010 (3)
- septembre 2010 (5)
- juillet 2010 (8)
- avril 2010 (6)

Un article de







