2017-01-30 1 views
0

Je travaille sur une table d'harmonie et je souhaite implémenter un long clic pour partager le son.Le clic long du bouton ne fonctionne pas

Je travaille avec un switch Case pour chaque bouton

public void MainMMP(View view){ 
    switch (view.getId()) { 
     case R.id.button1: 
       MainMMP.release(); 
       MainMMP = MediaPlayer.create(this, R.raw.xxx1); 
       MainMMP.start(); 
       break; 
     case R.id.button2: 
       MainMMP.release(); 
       MainMMP = MediaPlayer.create(this, R.raw.xxx2); 
       MainMMP.start(); 
       break; 
     case R.id.button3: 
      MainMMP.release(); 
      MainMMP = MediaPlayer.create(this, R.raw.xxx3); 
      MainMMP.start(); 
      break; 

Et maintenant, je veux mettre en œuvre le clic long. J'ai essayé beaucoup de code différent ici mais ça ne marche pas pour moi. Je ne sais pas où mettre la déclaration onLongClick et comment.

Quelqu'un peut-il me montrer une méthode de travail et en cas de clic long, il devrait juste m'envoyer un Toast que je sais que la méthode fonctionne?

+0

Je vous ai envoyé du code que vous pourriez vouloir vérifier. – AnixPasBesoin

Répondre

0

Vous pouvez ajouter le OnLongClickListener où vous voulez, dans la méthode onCreate par exemple.

Essayez d'utiliser le code suivant:

Button button = (Button)findViewById(R.id.button); 
    button.setOnLongClickListener(new View.OnLongClickListener() { 

    @Override 
    public boolean onLongClick(View v) { 

     //Your code 

     return false; // True if you want to execute simple click code too 
    } 
}); 
+0

Mais il devrait faire pour chaque bouton une autre action c'est mon problème – ExiizZ

+0

Vous pourriez obtenir l'id de chaque bouton à travers la vue. Je ne sais pas vraiment si je reçois le point du problème – Juanje

0

Vous pouvez utiliser ce

private View.OnLongClickListener listener = new View.OnLongClickListener() { 

    @Override 
    public boolean onLongClick(View view) { 
     switch (view.getId()) 
      case R.id.button1: 
      // Do something... 
      break; 
      case R.id.button2: 
      // Do something else... 
      break; 
     // If you still want to get normal click callbacks return true, 
     // if you do not then return false. 
     return true; 
    } 
} 

Quelque part dans votre code

Button button1 = (Button)findViewById(R.id.button1); 
Button button2 = (Button)findViewById(R.id.button2); 
button1.setOnLongClickListener(listener); 
button2.setOnLongClickListener(listener); 

Ou mieux ce

Une méthode couramment recommandée pour obtenir les rappels onClick/onLongClick/whatever consiste à implémenter les interfaces de rappel dans Activity.

class YourActivity extend Activity implements View.OnLongClickListener { 

    @Override 
    public boolean onCreate(/* ... */) { 
     // ... 
     button1.setOnLongClickListener(this); 
     button2.setOnLongClickListener(this); 
    } 

    @Override 
    public boolean onLongClick(View view) { 
     // Same code as the one above 
    } 
} 
+0

Hey j'ai essayé cette méthode mais je à ce stade button1.setOnLongClickListener (écouteur); <- Je ne peux pas résoudre le symbole pour setOnLongClick ... – ExiizZ

+0

Que s'est-il passé? À ce point? – AnixPasBesoin

+0

Eh bien j'ai essayé d'ajouter vos 2 premiers codes mais je reçois toujours le problème button1.setOnLongClickLister <- ne peut pas résoudre le symbole – ExiizZ