java语言语法

时间:2011-11-15 05:49:02

标签: java android

我正在用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);
    }
}

3 个答案:

答案 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);

第一个参数表示调用类的上下文。因此,您可以使用活动的thisgetBaseContext()

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

答案 2 :(得分:0)

您的问题是this适用于匿名内部类而不是您的Context子类实例。一般来说,你会写YourEnclosingClassName.this来达到目标​​。在您的情况下,您需要NodeEditor.this