2011-10-23 2 views
0

J'ai essayé de démarrer une activité, mais il me donne le message d'erreur: La méthode startActivity (intention) est non défini pour le type nouveau View.onClickListener() {}Impossible de démarrer l'activité à partir des boutons actionlistener?

Voici le code i utilisé le startActivity dans

 place.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // TODO If placeButton was clicked: 
      Intent placepin = new Intent("my.locations.oskar.mendel.PLACEPINACTIVITY"); 
      startActivity(placepin); 
     } 
    }); 

Répondre

4

L'OnClickListener est un objet de votre classe Activity. Dans le bloc de code onClick, les méthodes héritées de l'activité ne seront pas visibles par l'objet OnClickListener, vous devrez donc ajuster la portée en conséquence. Vous voulez probablement quelque chose comme ceci:

 place.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // TODO If placeButton was clicked: 
      Intent placepin = new Intent("my.locations.oskar.mendel.PLACEPINACTIVITY"); 
      ActivityClassName.this.startActivity(placepin); 
     } 
+0

ActivityClassName.this.startActivity (placepin); ce code est également valide si cet écouteur onClick n'est pas dans la classe d'activité? – Rakso

+1

Vous devrez peut-être poster plus de code, car je ne suis pas sûr où vous avez placé le onClickListener à ce stade. S'il y a un problème d'étendue causé par la tentative de manipuler ClickListeners d'une classe différente de l'activité en cours, vous devez vous assurer que la classe a reçu une copie du contexte de l'activité. Vous devriez alors pouvoir utiliser 'context.startActivity (placepin);' Je vous recommande de lire quelques articles sur l'héritage et la portée des classes. Un livre sur Java Swing donnera probablement un meilleur aperçu du fonctionnement général de ces choses qu'un livre Android. – blackbourna

0

Ma méthode pour résoudre ce problème est l'utilisation de la valeur booléenne.

boolean start = false; 

. 
. 
. 
buttonListener{ 
    .... 
    start = true; 
    ... 
    displayFriend(start); 
} 

public void displayFriend(boolean start){ 
    Intent intent = new Intent(this, xxActivity.class); 
    startActvity(intent); 
} 

espérons que cela vous aide.

Questions connexes