Crée un boutton appuie long java

Résolu
fares161121 Messages postés 12 Statut Membre -  
BunoCS Messages postés 436 Date d'inscription   Statut Modérateur Dernière intervention   -
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. choubaka Messages postés 5534 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    0
    1. fares161121 Messages postés 12 Statut Membre
       
      Bonjour,

      Merci pour la réponse mais je n'arrive pas a l'implémenter dans le code. Pourrais tu m'aider
      0
  2. BunoCS Messages postés 436 Date d'inscription   Statut Modérateur Dernière intervention   3 930
     
    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
  3. fares161121 Messages postés 12 Statut Membre
     
    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. BunoCS Messages postés 436 Date d'inscription   Statut Modérateur Dernière intervention   3 930
       
      et tu as quoi comme erreur ?
      0
  4. fares161121 Messages postés 12 Statut Membre
     
    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. BunoCS Messages postés 436 Date d'inscription   Statut Modérateur Dernière intervention   3 930
       

      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fares161121 Messages postés 12 Statut Membre
     
    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. BunoCS Messages postés 436 Date d'inscription   Statut Modérateur Dernière intervention   3 930
       
      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
  7. BunoCS Messages postés 436 Date d'inscription   Statut Modérateur Dernière intervention   3 930
     
    Bon, j'imagine que le problème est réglé ?
    Si tel est le cas, peut-on passer ce sujet en "résolu" ?
    0