2015-10-11 1 views
-1

j'ai fait une fonction de Snack-bar:Impossible de résoudre l'erreur de setAction() méthode dans Snack-bar

void openSnackbar(String title){ 
      Snackbar 
        .make(findViewById(R.id.coordinatorLayout), 
          title, 
          Snackbar.LENGTH_LONG) 
        .setAction("",this) 
        .show(); 
    } 

Mais à l'intérieur seAction() méthode deuxième perameter comme this donnant erreur you can't resolve method setAction(java.util.String,package.....)

Comment résoudre ce problème?

Répondre

1

Cochez la case official javadoc.

setAction (CharSequence text, View.OnClickListener listener) 

    Parameters: 
    text  Text to display 
    listener callback to be invoked when the action is clicked 

Vous pouvez utiliser quelque chose comme ceci:

Snackbar 
     .make(findViewById(R.id.coordinatorLayout), 
      title, 
      Snackbar.LENGTH_LONG) 
     .setAction("", new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        //Your code 
       } 
      }) 
     .show(); 

Sinon, vous pouvez utiliser:

Snackbar 
     .make(findViewById(R.id.coordinatorLayout), 
      title, 
      Snackbar.LENGTH_LONG) 
     .setAction("", myOnClickListener) 
     .show(); 

myOnClickListener = new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         //Your code 
        } 
       }; 

Si vous souhaitez utiliser

.setAction("",this) 

votre classe doivent mettre en œuvre le View.OnClickListener interface.

2

Mais à l'intérieur méthode seAction() deuxième perameter que cette erreur vous donnant ne pouvez pas résoudre méthode setAction (java.util.String, paquet .....)

le deuxième paramètre de setAction est une instance d'une classe qui implémente View.OnClickListener. Si le compilateur s'en plaint, c'est parce que votre classe n'implémente pas cette interface.