我正在用Eclipse的Java编写Android应用程序。我对java语法不是很熟悉。我遇到了这个错误。
The constructor Intent(new AdapterView.OnItemClickListener(){},
Class<NoteEditor> ) is undefined
以下是代码
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是Android的扩展活动。上面的代码是正确的,因为我在另一个地方写它没有错误。
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 :(得分:1)
您的代码中this
代表您的new AdapterView class not a activity
,
对于Intent构造函数,您必须传递当前活动或应用程序基本上下文的引用,
替换你的代码,
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);
}
});
编辑:也可以写
Intent intent = new Intent(<your current activity name>.this, NoteEditor.class);
答案 1 :(得分:1)
您使用匿名内部类this
时代码中使用的上下文是错误的。您应该使用的是Activity的上下文,如下所示:
Intent intent = new Intent(Category.this, NoteEditor.class);
第一个参数表示调用类的上下文。因此,您可以使用活动的this
或getBaseContext()
public Intent (Context packageContext, Class<?> cls)
答案 2 :(得分:0)
您的问题是this
适用于匿名内部类而不是您的Context
子类实例。一般来说,你会写YourEnclosingClassName.this
来达到目标。在您的情况下,您需要NodeEditor.this
。