2017-02-26 6 views
-1

pourquoi quand je crée une méthode void pour onLongClickListener me donne cette erreur dans le studio android? Erreur =>pourquoi quand je crée une méthode void pour onLongClickListener me donne cette erreur dans le studio android?

'onLongClick(View)' in 'Anonymous class derived from android.view.View.OnLongClickListener' clashes with 'onLongClick(View)' in 'android.view.View.OnLongClickListener'; attempting to use incompatible return type 

mon code est:

myBTN.setOnLongClickListener(
      new Button.OnLongClickListener(){ 
       public void onLongClick(View v){ 
        TextView lblm=(TextView) findViewById(R.id.txtMessage); 
        lblm.setText("Good Bye :| "); 
       } 
      } 
    ); 

mais quand j'utilise une méthode booléenne, il n'y a pas l'erreur

myBTN.setOnLongClickListener(
      new Button.OnLongClickListener(){ 
       public boolean onLongClick(View v){ 
        TextView lblm=(TextView) findViewById(R.id.txtMessage); 
        lblm.setText("Good Bye :| "); 
        return true; 
       } 
      } 
    ); 

Répondre

0

Cette méthode est déjà déclarée booléenne par la équipe qui a écrit ce code, vous pouvez seulement remplacer l'implémentation, mais pas le type de retour, rechercher "méthode de substitution"

0

L'interface android.view.View.OnLongClickListener a une méthode onClick(View) qui renvoie un boolean. Comme vous ne pouvez pas surcharger les méthodes par leur valeur de retour, définir une méthode avec la même liste d'arguments mais avec un type de retour différent provoquera une erreur de compilation.

0

C'est le concept de base de la méthode overriding.You pouvez substituer une méthode en changeant le type de retour.Méthode redéfinissant le travail si la classe enfant a la même signature de méthode que celle du parent.Voici le parent Button.OnLongClickListener qui est une interface ayant la méthode définit comme

interface Button.OnLongClickListener{ 

    public void onLongClick(View v);   

} 

Donc, vous implémenter la classe anonyme devrait également avoir la même signature.

0

Bouton ne peut pas avoir setOnLongClickListener vous êtes censé mettre en œuvre le setOnLongClickListener comme Bouton, basé sur View.class et View.class ont une interface appelée onLongClickListener qui ont un méthode avec le type booléen de sorte que vous pouvez toujours mettre en œuvre le setOnLongClickListener tapez comme suit:

button.setOnLongClickListener(new View.OnLongClickListener() { 
      @Override 
      public boolean onLongClick(View view) { 
       // your code here 
       return false; 
      } 
    }); 

vous pouvez caisse plus View.class en studio Android vient de cliquer OnLongClickListener espoir cette aide ..