IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Erreur en mettant un écouteur sur un bouton


Sujet :

Composants graphiques Android

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut Erreur en mettant un écouteur sur un bouton
    Bonjour,

    j'ai ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     public class Plateau3 extends View implements OnClickListener{ 
     
               public static Boolean jokNum;
    	   private Button jok1;
     
               public Plateau3(Context context,int H ,int L) {
    	        super(context);
     
     
    	        jokNum = false;
    	        jok1 = (Button)findViewById(R.id.boutonJoker1);
    	        try{
    	        	jok1.setOnClickListener(this);
    	        }
    	        catch(Exception e){
    	        	e.getMessage();
    	        	e.printStackTrace();
    	        }
     
    }
     
    ...
     
     
                   @Override
    		public void onClick(View v) {
    			switch(v.getId()){
     
    			case R.id.boutonJoker1 : 
    				if (jokNum){
    				jokNum = false;
    				}
    				else
    				{
    					jokNum=true;
    				}
     
    				break;
    			}
     
    		}
     
    }
    Je souhaite mettre un écouteur sur un bouton,
    mon boutonJoker1 se situe dans un fichier XML.
    En mettant un écouteur sur ce bouton, je déclenche une exception de type
    NullPointerException.

    Avez vous une solution svp ?

    Merci,

    Mathieu.

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Salut,

    Ton Layout XML n'a pas l'air d'être affecté à ta vue courante, donc il ne peux pas retrouver ton bouton.

    As-tu réalisé cette affectation dans un endroit non affiché ici ?
    Peux-tu nous donner ton fichier xml décrivant ton layout ?

    Merci.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut
    mon bouton se situe dans un fichier XML qui n'est pas en rapport avec ce dernier fichier.

    il est dans bouton.xml qui est inclue dans un autre fichier xml jeu.xml
    jeu.xml est lancé dans Jeu.java et ensuite Jeu.java lance le fichier que j'ai envoyé.

    bouton.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="wrap_content" android:layout_height="wrap_content">
     
    <Chronometer android:text="@+id/Chronometer01" android:id="@+id/Chronometer01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="20px" android:layout_marginBottom="15px"></Chronometer>
    <Button android:text="Jock 1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px" android:id="@+id/boutonJoker1"></Button>
    <Button android:text="Jock 2" android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px"></Button>
    <Button android:text="Jock 3" android:id="@+id/Button03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px"></Button>
    <Button android:text="Jock 4" android:id="@+id/Button04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px"></Button>
     
    </TableLayout>

    jeu.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="utf-8"?>
    <TableRow xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >	
    		<include android:layout_width="380px" android:layout_height="fill_parent" layout="@layout/plateau" android:id="@+id/plateau"></include>
    		<include android:layout_width="100px" android:layout_height="fill_parent" layout="@layout/boutons" android:id="@+id/boutons"></include>
    </TableRow>

    Merci.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    Essaye de mettre cela dans ton constructeur....
    LayoutInflater.from(context).inflate(R.layout.bouton.xml, this, true);

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut
    Merci,
    mais dans la méthode inflate, quand je passe this en paramètre j'ai une erreur

    Pour lui mon this est de type Plateau3 et il veut un ViewGroup.

    Avez vous une idée ?
    Merci

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    Essaye de mettre cela dans ton constructeur....
    LayoutInflater.from(context).inflate(R.layout.bouton.xml, (ViewGroup)this, true);

    Si ca ne marche pas teste ça : Essaye de mettre cela dans ton constructeur....
    LayoutInflater.from(context).inflate(R.layout.bouton.xml, (ViewGroup)findViewById(R.id....),true);

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut
    Merci,

    je fais donc cela


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    LayoutInflater.from(context).inflate(R.layout.boutons, (ViewGroup)findViewById(R.id.boutonJoker1), true);
    	        boutonJoker1 = (Button)findViewById(R.id.boutonJoker1);
    	        boutonJoker1.setOnClickListener(this);
    mais mon application bug toujours,
    est ce bon ce que je fais ?


    Merci

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    boutonjoker id est une bouton il ne peut pas etre un vieugroup puisqu'il ne peut pas avoir un sous composant....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LayoutInflater.from(context).inflate(R.layout.boutons, (ViewGroup)findViewById(R.id.table_id), true);
    ou


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
     public class Plateau3 extends TableLayout  implements OnClickListener{ 
     
               public static Boolean jokNum;
    	   private Button jok1;
     
               public Plateau3(Context context,int H ,int L) {
    	        super(context);
    	   LayoutInflater.from(context).inflate(R.layout.bouton.xml, this, true);
     
      jokNum = false;
    	        jok1 = (Button)findViewById(R.id.boutonJoker1);
    	        try{
    	        	jok1.setOnClickListener(this);
    	        }
    	        catch(Exception e){
    	        	e.getMessage();
    	        	e.printStackTrace();
    	        }
     
    }
     
    ...
     
     
                   @Override
    		public void onClick(View v) {
    			switch(v.getId()){
     
    			case R.id.boutonJoker1 : 
    				if (jokNum){
    				jokNum = false;
    				}
    				else
    				{
    					jokNum=true;
    				}
     
    				break;
    			}
     
    		}
     
    }
    Et ton fichier xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    <?xml version="1.0" encoding="utf-8"?>
    <merge>
    <TableLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="wrap_content" android:layout_height="wrap_content">
     
    <Chronometer android:text="@+id/Chronometer01" android:id="@+id/Chronometer01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="20px" android:layout_marginBottom="15px"></Chronometer>
    <Button android:text="Jock 1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px" android:id="@+id/boutonJoker1"></Button>
    <Button android:text="Jock 2" android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px"></Button>
    <Button android:text="Jock 3" android:id="@+id/Button03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px"></Button>
    <Button android:text="Jock 4" android:id="@+id/Button04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px"></Button>
     
    </TableLayout>
    </merge>

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut
    Merci,
    Problème résolu autrement, j'ai mis mes écouteurs normalement dans une autre classe(Jeu.java) qui utilise le layout avec les boutons !

    Tout marche très bien

    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre un écouteur sur chaque bouton dans une boucle
    Par BillGates62 dans le forum Général Java
    Réponses: 6
    Dernier message: 29/04/2014, 11h50
  2. Erreur quand je clique sur un bouton
    Par zouuc dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 16/04/2009, 23h33
  3. Problème d'écouteur sur un bouton
    Par popy67 dans le forum Débuter
    Réponses: 1
    Dernier message: 29/10/2008, 16h56
  4. Réponses: 7
    Dernier message: 12/02/2008, 19h26
  5. Access: Erreur syntaxe sur un bouton.
    Par cesar33 dans le forum IHM
    Réponses: 13
    Dernier message: 14/12/2006, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo