2011-11-15 8 views
0

J'écris une application Android en Java d'Eclipse. Je ne suis pas très familier avec la syntaxe java. Je rencontre cette erreur.syntaxe de langage Java

The constructor Intent(new AdapterView.OnItemClickListener(){}, 
Class<NoteEditor>) is undefined 

est Ci-dessous le code

ListView lv = getListView(); 

lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
      Intent intent = new Intent(this, NoteEditor.class); 
      startActivity(intent); 
    } 
}); 

noteeditor est étend l'activité d'Android. Le code ci-dessus est correct parce que je l'écris dans un autre endroit ce n'est pas une erreur.

public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
    case R.id.new_game: 
     Intent intent = new Intent(this, NoteEditor.class); 
     startActivity(intent); 
     //newGame(); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

Non, le code de l'activité n'est pas correct, ce qui est la raison pour laquelle vous obtenez une erreur de compilation. ** ceci ** ne se réfère pas à ce que vous pensez qu'il fait là; ça fait référence à la classe anonyme que vous installez. –

+0

modifier comme ceci Intention intention = new Intent (YourActivity.this, NoteEditor.class); –

+0

poster votre code d'activité entier. – user370305

Répondre

1

Le contexte utilisé dans votre code est incorrect, car vous utilisez la classe interne anonyme this. Ce que vous devez utiliser est le contexte de l'activité, comme ceci:

Intent intent = new Intent(Category.this, NoteEditor.class); 

Le premier paramètre indique le contexte de la classe appelante. Vous pouvez donc utiliser this ou getBaseContext()

public Intent (Context packageContext, Class<?> cls) 
+0

Mais il montre "Aucune instance englobante du type NoteEditor est accessible dans la portée". Quel est le problème? – Magic

+0

Quel est le nom de l'activité dans laquelle se trouve ce code? – Reno

+0

"public class Catégorie extends ListActivity" – Magic

0

Votre problème est que this applique à la classe interne anonyme plutôt que votre instance Context de sous-classe. En général, vous écririez YourEnclosingClassName.this pour arriver à cela. Dans votre cas, vous avez besoin de NodeEditor.this.

1

Ici, dans votre code this fait référence à votre new AdapterView class not a activity,

et constructeur Intent vous devez passer une référence de votre activité actuelle ou le contexte de base de l'application,

remplacer votre code,

ListView lv = getListView(); 

lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
      Intent intent = new Intent(getBaseContext(), NoteEditor.class); 
      startActivity(intent); 
    } 

    }); 

EDIT: aussi vous pouvez écrire

Intent intent = new Intent(<your current activity name>.this, NoteEditor.class);