juil
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.

Le Toaster !

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 !).

Création d'un layout

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é.

Déclaration de l'activity

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.

  • http://www.neroid.info JCDusse1981

    Très bon tuto !

    J’aurais toutefois un ou deux commentaires/questions :
    - Pour la méthode onClick, Eclipse m’indique que le @Override pose problème avec une majuscule ;)
    - Le “if (v == monBouton)” ne fonctionne pas : si je rajoute du code dans un “else”, là, ça fonctionne. D’où peut venir le problème ?
    - Il faudrait aussi préciser, au cas où on ne s’en rendrait pas compte (comme ce fut le cas au début pour moi), qu’il faut rajouter des imports pour chaque objet utilisé ;)

    En tout cas, merci pour le travail effectué : je me remets doucement au Java (pas pratiqué depuis 2003) et j’ai pris goût à tes tutos => Je vais tous les dévorer :biggrin:

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Normalement dans Eclipse pour override tu fais (CTRL + ESPACE) et tu choisis la fonction que tu veux Override, par contre si il te met une erreur dessus c’est que tu ne l’a pas mise au bon endroit :whistle:

    Le problème de if(v == monBouton) doit provenir du problème cité ci-dessus.

    Pour les imports si tu utilises le complétion automatique du code avec Eclipse (ou en utilisant la combinaison CTRL + SHIFT + O (qui permet de corriger les erreurs rapidement) les imports seront fais :)

  • http://www.neroid.info JCDusse1981

    Ah, merci pour le Ctrl-Espace, je vais pouvoir tenter ça et donc résoudre mon problème de bouton :happy:

    Pour les imports, oui, j’ai compris un peu plus tard qu’Eclipse les proposait mais je me disais qu’il serait intéressant de le rappeler pour les rouillés du Java comme moi :whistle: (tout du moins dans le premier ou deuxième tuto, après, c’est à nous d’y penser ;) )

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Je vais le rajouter en plus dans le deuxième tutoriel :)

  • http://SiteWeb Quentin

    Salut, t’es tutos sont génieux mais j’ai une fois sur 2 une erreure qui me dit :

    >>”[2010-10-31 17:10:36 - Formation] Error in an XML file: aborting build.”

    Et de plus sa m’ouvre un nouvel onglet “main.out.xml”

    Pourquoi?
    Merci d’avance

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Ne serais-ce pas un problème lié à Eclipse ? As-tu essayé en reinstallant celui ci ?

    Sinon montre moins le code ou envoie moi ton projet, par email.
    Bonne soirée

  • http://SiteWeb Alexis

    je vais faire écho, c’est un super tuto! Mais j’ai un soucis:

    Quand je veux “run” ça me met qu’il y a une erreur…mais je ne vois pas du tout où est l’erreur dans mon code. Il y a bien une petite croix rouge à côté du nom de mon projet à gauche dans le “package explorer” mais je vois pas à quoi elle correspond et la console ne me dit rien.

    Tu ne saurais pas à quoi est due l’erreur please?

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Essaye en faisant un clean de ton projet dans le menu build, puis tu le fermes et le ré-ouvre.

    Par moment le plugin ADT à du mal à mettre à jour certains fichiers.

  • http://SiteWeb Alexis

    Pardon mais en fait c’est bon j’ai refait entièrement le projet et ça fonctionne…

    En tout cas encore merci pour tes tutos!

  • http://SiteWeb Alexis

    Arf désolé problème : :dizzy: quand je “run” et qu’après je clique sur notre bouton ça me met:

    “The application Intend (process com.Intend) has stopped unexpectedly. Please try again.”

    Please Help :biggrin:

  • http://SiteWeb Alexis

    Bon tu vas commencé à en avoir marre :whistle: j’ai trouvé pourquoi… problème de syntaxe avec mon TextView.
    J’avais écrit :tongue:

    Allez sur ce j’arrête de spamer ton tuto merci encore :wink:

  • http://SiteWeb Alexis

    Tiens ça s’est pas affiché
    j’avais écrit “”

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Y’a pas de soucis, ça arrive de se tromper de temps à autre, c’est pas la première et dernière fois que cela t’arriveras :lol:

  • http://SiteWeb Neuromancien

    Yop,
    J’ai le même problème que JCDusse1981, mais le ctrl+espace ne me propose rien de convaincant, j’ai juste une enorme liste qui apparait, et quelque soit ce que je sélectionne, il ne m’écrit pas “@Override”…
    mais plutot :
    public xxxxxx() {
    // TODO Auto-generated constructor stub
    }

    Je me foire quelque part ? Faut sélectionner quelque chose avant le ctrl+espace ? :wassat:
    Merci de la réponde ;)

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Regarde bien que tu as ton héritage extends XXXXX, puis normalement en faisant le ctrl + espace tu dois avoir la méthode dans la liste, tu la sélectionne et normalement elle s’ajoute avec un @Override au dessus.

    Sinon tu peux toujours m’envoyer un mail avec ton code pour que j’y regarde.

  • http://SiteWeb Neuromancien

    Qu’entends tu par “ton heritage extends XXX” ?
    ma classe principale est bien “public class test_android extends Activity implements OnClickListener {”

    Devrais-je avoir l’extend sur la seconde classe, “public void onClick(View v) {” ?

  • http://SiteWeb Neuromancien

    Ok, problème trouvé, j’utilisait “Button monBouton = (Button)findViewById(R.id.buttonToast); ” au lieu de directement utiliser “monBouton = (Button)findViewById(R.id.buttonToast);”

    Merci tout de même ;-)

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Désolé je n’avais pas vu ton autre commentaire, content pour toi que tu es trouvé comme solutionner ton problème ;)

  • http://www.morengi.com Oussama

    Salut,
    Pour le problème du if(v == monBouton) qui ne marche pas, vérifiez que vous n’avez pas redéclarer monBouton (à cause d’une faute de copier/coller). C’était mon cas et j’ai bloqué sur ça un bon moment.
    Dans la partie où on organise un peu les choses, la déclaration de monBouton est faite au début (Button monBouton = null;), alors qu’avant, c’était une déclaration dans la fonction onCreate.
    Du coup on redéclare monBouton, ce qui fait qu’il est différent de v au moment du click.

  • http://SiteWeb Hataka_Fuusen

    Bonsoir,

    J’ai un problème à la ligne :
    “monBouton = (Button)findViewById(R.id.buttonToast);”

    Il me souligne id en disant qu’il n’existe pas, qu’il ne le trouve pas.

    Quelqu’un à une idée ?
    Merci

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    1) Ça peut être un mauvais importe de R
    2) Ton projet n’est pas généré donc le fichier R.java n’existe pas

  • http://SiteWeb Toneo

    slt,
    Un grand merci pour ce tuto meme si c pas évident de tt comprendre en suivant seulement ce tuto, j’ai du lire d’autres tuto pour avoir enfin maitriser ce tuto.
    Bref, je m’adresse a vous pour vous dire que le format pdf ne marche pas , donc sa serai gentil de votre part d’essayer de fixer ce prob
    Merci d’avance

  • http://SiteWeb Elion

    Excellent tuto, juste un peu rapide a partir de la création d’une nouvelle activité.
    Par contre j’ai juste un bug, quand j’émule mon programme il ne veut pas passer d’une activité à l’autre, alors que sur mon LG le programme passe sans problème,
    quelqu’un a une réponse ?
    Merci

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Pour le bug regarde dans le logcat ce qu’il affiche, c’est le seul moyen de savoir le pourquoi du comment :)

  • http://SiteWeb Elion

    Autant pour moi, j’ai réessayé ce soir et il marche sans problème, surement un bug passager, mon émulateur affiche plein d’erreur au démarrage ça viens peut-être de là.
    Merci de ta réponse rapide et encore une fois, super tuto !

  • http://SiteWeb Alban06

    Petite Observation ….dans le fichier main.xml du dossier layout du projet , les ballises doivent imperativement commencer par un ‘B’ Majuscule ..sinon ca me lancait l’erreur “…..Force to close ” ….ou peut etre s’agit-il d’une configuration a faire sous eclipse …..En tout cas Merci pour le Tuto …bien fait (juste le petit rappel pour les “imports” …et c’est top …Encore Merci

  • http://SiteWeb Alban06

    Pardon j’avais pas vu qu’il y avait un filtre sur les balises …je voulais dire dans mon post precedent que dans les balises du fichier main.xml du dossier layout du projet, le mot “Button” doit imperativement s’ecrire avec un ‘B’ majuscule ….j’ai passe 1 heure a comprendre pourquoi ca marchait pas chez moi …Bon courage

  • http://SiteWeb Alban06

    Rebonjour ….Alors la j’ai un super gros soucis …je percute pas le moment de la creation de la seconde activité et le moyen de mettre en oeuvre malgré la capture d’ecran ….Y aurait-t-il quelqu’un pour eclairer ma lanternet ????

  • http://SiteWeb jeanjean69

    Bonjour,

    J’ai une petite question, que contient la classe Toast?? Je n’ai pas bien saisi le fonctionnement de cette classe.

    Merci d’avance :smile:

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    La classe Toast est un helper, elle est mise à disposition par Google pour t’aider siplement à afficher des messages aux utilisateurs.

  • http://SiteWeb manita

    je veux vous dire merci pr ce tuto ce trè efficace :heart: heureusement j l’ai trouvé dans le bon moment :w00t:

  • http://SiteWeb Brucella

    Super tous ces tutos.

    J’ai problème que je m’explique pas. Pour monAutreActivite, j’ai créé un layout comme c’est décrit ici. Pourtant que je lance l’application, quand je clique sur le bouton, je passe bien à ma seconde activité mais je ne vois pas mon TextView… D’ailleurs si j’essai de mettre un bouton ou autre je chose je ne le vois pas non plus…
    J’ai essayé de voir si je pouvais mettre un Toast.makeText() pareil je ne le vois pas apparaitre.
    J’ai aucune erreur dans les logs.

    Mon xml est le suivant :

    Ma seconde activité est la suivante :

    public class MonAutreActivite extends Activity {

    public void OnCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Toast.makeText(this, “Coucou n°2″, Toast.LENGTH_SHORT).show();
    }
    }

  • http://SiteWeb Brucella

    oups on dirait que mon message n’est pas complet, l’xml de mon layout est le suivant :

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    C’est bizarre, envoie moi par mail ton projet, je vais y regarder ;)

  • http://SiteWeb Brucella

    Merci de ta réponse rapide :)
    Bon au final j’ai trouvé mon erreur… au bout de 5 heures de recherche et d’essai dans tous les sens.
    Si vous regardez le code que j’ai posté plus haut, j’ai écrit la méthode onCreate() de la classe MonAutreActivite avec une majuscule sur le O … forcément ça marche pas des masses…

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Effectivement :)

  • http://SiteWeb FKS

    Géniaux ces tuto. androïd mais si je peux me permettre il manque un parcours flêché (une rubrique tuto androïd).

  • http://SiteWeb drouchek

    Super tuto.
    J’ai tout suivi jusqu’a tu dis de créer une activité éritant de la classe Activity du package « android.app.Activity » mais comment on créer une activité et ou ??? :whistle: :whistle:
    Désolé je débute ! :lol:

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    En héritant d’Activity comme tu le dis :P

  • http://SiteWeb Grattmandu03

    Salut,

    En réponse au commentaire #5 de Quentin.
    Un peu tard pour lui je pense mais ça peut toujours servir à quelqu’un d’autre :wink:

    L’erreur suivante >> »[2010-10-31 17:10:36 - Formation] Error in an XML file: aborting build. »
    vient du fait que l’onglet d’affichage visible d’Eclipse est un fichier xml. Et donc lorsque tu appuies sur le bouton run (le bouton “play” d’Eclipse) Eclipse compile ton fichier xml et te crées un nouveau fichier xml : dans le cas présent “main.out.xml”.
    Donc à l’avenir, si tu veux lancer ton projet, assures-toi que l’onglet ouvert d’eclipse est bien un fichier java.

    Cordialement,
    Seb

  • http://SiteWeb Arnaud

    Je suis actuellement en train de lire votre tutoriel sur la programmation d’applications Androïd. Je possède quelques notions de Java je ne m’en sort donc pas trop mal.
    J’ai terminé sans aucun problème le « Hello World » traditionnel ^^ et j’ai attaqué le tuto 2 (Listener/Instend) et j’ai un problème. Mon code me semble correct et aucunes erreurs n’est indiqué mais quand je lance le programme dans l’AVD le programme ne veut pas démarrer ! (« Force closed » quelque chose dans ce genre-là.) Je vous joint mon code pourriez-vous me dire ce qui cloche.

    Bravo pour cette initiative de tutoriel. On ne trouve malheureusement pas encore de tuto concernant Androïd et le vôtre est assez détaillé je trouve.

    Merci d’avance de votre aide.
    Cordialement

    FICHIER XML :

    FICHIER .JAVA :

    package malrod.pack;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;

    public class Boutton extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button monBouton = (Button)findViewById(R.id.buttonToast);

    monBouton.setOnClickListener(new OnClickListener(){

    public void onClick(View v) {
    Toast.makeText(Boutton.this, “Coucou 1″, Toast.LENGTH_SHORT).show();

    }
    });
    }
    }

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Bonjour Arnaud,

    Toast.makeText(Boutton.this, “Coucou 1″, Toast.LENGTH_SHORT).show();

    A ce niveau dans le Toast.makeText il faut le passer le context (contexte de l’application) et non pas le contexte du bouton.

    Soit this soit getContext :)

  • http://SiteWeb Arnaud

    Ah effectivement ! Un oeil neuf et qui plus est un oeil habitué est toujours le bienvenu !Merci beaucoup !

  • Alexis

    Bonjour,

    Merci pour ce tuto.

    Donc, je rencontre un problème, dès le debut (sa commence bien).

    Au moment où on ajoute le bouton, j’ai ‘View’, et ‘Toast’ qui sont sousligné.

    Voici mon code: (HelloActivity.java)

    package fr.web.Web_Hello;

    import android.app.Activity;
    import android.os.Bundle;

    public class HelloActivity extends Activity {
    /** Called when the activity is first created. */
    @Override

    public void onClick(View v) {

    Toast.makeText(HelloActivity.this, “Coucou !”, Toast.LENGTH_SHORT).show();

    }
    }

    Et le main.xml

    Merci d’avance

  • Alexis

    Donc, je viens de résoudre le problème précédent en ajoutant:
    import android.widget.Toast;

    Maintenant, j’ai setOnClickListener qui est souslignés.

    Encore merci

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Bonjour Alexis,

    Un petit Ctrl + Shift + O règle souvent les problèmes, pour ton OnClickListener c’est encore un soucis sur les imports.

  • Alexis

    Bonjour,

    Dès la 1ere étapes, où on ajoute le bouton, le fichier java est bien celui la ?

    package com.formation;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;

    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);

    }

    Button monBouton = null;

    monBouton.setOnClickListener(new OnClickListener() {

    @Override

    public void onClick(View v) {

    Toast.makeText(MonActivite.this, “Coucou !”, Toast.LENGTH_SHORT).show();

    }
    });

    }

    Encore merci

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Oula oui mais il faut déclarer dans le onCreate pas autour malheureux ^^

    Dans une classe tu ne peux déclarer que des variables && méthodes.
    Pour un traitement il faut qu’il soit dans une méthode, don dans ton cas tu essayes de faire un traitement hors de la méthode.

  • Alexis

    Bonjour, pouvez vous me donner les codes directement (*.java et main).xml où c’est le ‘toaster’, car la, je suis completement perdu.

    Merci

  • benjamin notteghem

    je suis un newbi sur androïd, je commence juste et alors là, merci, le système de liens est un peu la base du dev, tuto suivi à la lettre, fonctionne parfaitement (ormis quelques @Override que j’ai du faire sauter….. :biggrin: )

    Bravo