Crée un boutton appuie long java

Résolu
Bonjour, je début en java et sur Android studio j'aimerais savoir comment on créent un bouton qui prend en compte un appuie long, voici un code qui marche simplement pour l'appuie court.

Merci a vous

package com.example.application;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    public void displayMsg(String str){
        Toast.makeText(this, "Bouton Cliqué", Toast.LENGTH_SHORT).show();
    }

    public void displayMsg2(String str){
        Toast.makeText(this, "Bouton Appuyé", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button bt1 = findViewById(R.id.bt1);
        bt1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                displayMsg2("bt1");
            }
        });

        Button bt2 = findViewById(R.id.bt2);
        bt2.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.bt2)
            displayMsg("bt2");
    }

}

6 réponses

  1. Modérateur
    0
    1. Bonjour,

      Merci pour la réponse mais je n'arrive pas a l'implémenter dans le code. Pourrais tu m'aider
      0
  2. Modérateur
    Hello,

    C'est plutôt celle-ci qui est à utiliser sur un Bouton
    bouton.setOnLongClickListener(new View.OnLongClickListener(){
        public boolean onLongClick(View v) {
            Toast.makeText(context, "Salut mon appui long", Toast.LENGTH_SHORT).show();
            return true;
        } 
    
    0
    1. Merci beaucoup pour ton aide mais j'ai essayer de l'implémenter mais ca me met que des erreurs tu pourrais me guider stp ? mon code initial est un peu plus haut
      0
      1. Modérateur
        et tu as quoi comme erreur ?
        0
    2. J'ai tout d'abord fait ca dans mon code :

      package com.example.testbouton;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.Button;
      import android.widget.Toast;
      import androidx.appcompat.app.AppCompatActivity;

      public class MainActivity extends AppCompatActivity implements View.OnClickListener {

      // public void displayMsg(String str){
      // Toast.makeText(this, "Bouton Appuyer", Toast.LENGTH_SHORT).show();
      // }

      public void displayMsg2(String str){
      Toast.makeText(this, "Bouton Cliquer", Toast.LENGTH_SHORT).show();
      }
      public boolean displayMsg(String str) {
      Toast.makeText(this , "Appuie Long", Toast.LENGTH_SHORT).show();
      return true;
      }

      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      Button bt2 = findViewById(R.id.bt2);
      bt2.setOnClickListener(new View.OnClickListener(){
      @Override
      public void onClick(View v) {
      displayMsg("bt2");
      }
      });

      Button bt1 = findViewById(R.id.bt1);
      bt2.setOnLongClickListener(new View.OnLongClickListener(){
      @Override
      public boolean onLongClick(View v) {
      if (v.getId() == R.id.bt1)
      displayMsg2("bt1");
      return true;
      }
      });

      }

      code d'erreurs sont :
      '}' expected
      0
      1. Modérateur

        if (v.getId() == R.id.bt1)
        displayMsg2("bt1");
        return true;
        }

        Il manque effectivement une accolade après le 'if'. ça, tu devrais le voir sans faire appel au forum
        :P

        Et tu feras attention, tu as mis le long click sur bt2...
        0
    3. Merci vraiment pour t'es réponses mais j'ai encore des problème d'accolades :)

      voici mon code :

      package com.example.testbouton;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.Button;
      import android.widget.Toast;
      import androidx.appcompat.app.AppCompatActivity;
      
      public class MainActivity extends AppCompatActivity implements View.OnClickListener {
      
          // public void displayMsg(String str){
          //   Toast.makeText(this, "Bouton Appuyer", Toast.LENGTH_SHORT).show();
          // }
      
          public void displayMsg2(String str) {
              Toast.makeText(this, "Bouton Cliquer", Toast.LENGTH_SHORT).show();
          }
      
          public boolean displayMsg(String str) {
              Toast.makeText(this, "Appuie Long", Toast.LENGTH_SHORT).show();
              return true;
          }
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
              Button bt2 = findViewById(R.id.bt2);
              bt2.setOnClickListener(new View.OnClickListener(){
                  @Override
                  public void onClick(View v) {
                      displayMsg("bt2");
                  }
              });
      
              Button bt1 = findViewById(R.id.bt1);
              bt1.setOnLongClickListener(new View.OnLongClickListener(){
                  @Override
                  public boolean onLongClick(View v) {
                      if { (v.getId() == R.id.bt1)
                          displayMsg2("bt1");
                          return true;
                      }
                  }
              });
          }
        

      voici les erreurs :

      '(' expected 40
      ';' expected 40
      '}' expected 46

      Désoler et vraiment merci

      EDIT : Ajout des balises de code (la coloration syntaxique).
      Explications disponibles ICI

      Merci d'y penser dans tes prochains messages.
      0
      1. Modérateur
        Apprends à bien indenter ton code, tu verras tout de suite où est le souci.
        Voici la correction:
        Button bt1 = findViewById(R.id.bt1);
        bt1.setOnLongClickListener(new View.OnLongClickListener(){
            @Override
            public boolean onLongClick(View v) {
                if (v.getId() == R.id.bt1) {
                    displayMsg2("bt1");
                }
                return true;
            }
        });
        
        0
    4. Modérateur
      Bon, j'imagine que le problème est réglé ?
      Si tel est le cas, peut-on passer ce sujet en "résolu" ?
      0