Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Probléme bouton<=>événement

Sujet résolu
    26 juin 2012 à 13:33:13

    Bonjour,

    Je suis en train de suivre le tutoriel Créez des applications pour Android, et j'en suis à gérer les événements...

    Mon problème survient lorsque je veux "connecter" mon bouton à un événement... voici le code :
    le .java :
    package teste.bouton;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.Button;
    
    public class BoutonActivity extends Activity 
    {
        private View.OnTouchListener touchListenerBouton = new View.OnTouchListener()
        {
        	@Override
        	public boolean onTouch(View v, MotionEvent event)
        	{
        		monBoutton.setX(5);
        		monBoutton.setY(10);
        		return true;
        	}
        };
    	
    	private Button monBoutton = null; 
    	
    	/** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
        	super.onCreate(savedInstanceState);
        	
        	monBoutton = (Button)findViewById(R.id.button);
        	
        	
        	setContentView(R.layout.main);
        	
        	monBoutton.setOnTouchListener(touchListenerBouton);
       	
        }
    
    }
    


    le main.xml :

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/textButton"
        />
    
    </LinearLayout>
    


    et le string.xml:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    	<string name="app_name">Boutton</string>
    	<string name="textButton">Boutton</string>
    </resources>
    


    Lorsque j'exécute le programme celui-ci ne se lance pas et j'ai le droit a un message d'erreur :"Unfortunately, Boutton has stopped"...

    Je pense que le problème se situe au niveau de monBoutton.setOnTouchListener(touchListenerBouton); car lorsque je l'enlève le code s'exécute sans erreur.
    Mais je ne comprend pas le problème, je ne sais pas pourquoi ça bug, c'est pour cela que je poste.

    Si vous avez une idée je prend :D
    • Partager sur Facebook
    • Partager sur Twitter
      26 juin 2012 à 16:16:55

      Bonjour,

      Tu as une erreur dans l'ordre de tes instructions de la méthode onCreate(...) :

      package teste.bouton;
      
      import android.app.Activity;
      import android.os.Bundle;
      import android.view.MotionEvent;
      import android.view.View;
      import android.widget.Button;
      
      public class BoutonActivity extends Activity 
      {
          private View.OnTouchListener touchListenerBouton = new View.OnTouchListener()
          {
          	@Override
          	public boolean onTouch(View v, MotionEvent event)
          	{
          		monBoutton.setX(5);
          		monBoutton.setY(10);
          		return true;
          	}
          };
      	
      	private Button monBoutton = null; 
      	
      	/** Called when the activity is first created. */
          @Override
          public void onCreate(Bundle savedInstanceState) 
          {
          	super.onCreate(savedInstanceState);
              // Je désérialise mon fichier XML AVANT tout !
          	setContentView(R.layout.main);
          	// Je peux alors accéder à mon bouton
          	monBoutton = (Button)findViewById(R.id.button);
          	// Et lui attacher un listener
          	monBoutton.setOnTouchListener(touchListenerBouton);
         	
          }
      
      }
      


      La seule chose, c'est que l'évènement à attacher au bouton est plutôt OnClickListener que OnTouchListener. :)
      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
        26 juin 2012 à 18:24:22

        Merci ! Cela fonctionne ! Et je retiens pour l'ordre des instructions !

        Mais par contre... mon application est destinée aux tablettes tactiles... C'est pour cela que je pensais que OnTouchListener convenait. Par ce que je ne pense pas qu'on puisse cliquer sur une tablette tactile... Ou alors les "touché" est assimilé à un clique ????

        Merci.
        • Partager sur Facebook
        • Partager sur Twitter
          26 juin 2012 à 20:47:25

          Ah oui, j'ai du relire 2-3 fois mais je crois avoir compris ce qui t'embêtait. En fait, le listener onClickListener n'est pas du tout un listener destiné aux boutons physiques mais bien aux boutons "softwares" de ton application. Il est donc tout à fait adapté à ta situation.

          Si tu veux connaitre la différence entre les deux listeners, onTouchListener peut être attaché à un peu près n'importe quoi : le touché sur une image, un texte, etc.
          • Partager sur Facebook
          • Partager sur Twitter
          Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.

          [Android] Probléme bouton<=>événement

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown