首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java语言语法

java语言语法
EN

Stack Overflow用户
提问于 2011-11-15 13:49:02
回答 3查看 194关注 0票数 0

我正在用Eclipse的Java编写一个android应用程序。我对java的语法不是很熟悉。我遇到了这个错误。

代码语言:javascript
复制
 The constructor Intent(new AdapterView.OnItemClickListener(){},
 Class<NoteEditor> ) is undefined

下面是代码

代码语言:javascript
复制
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的扩展活动。上面的代码是正确的,因为我在另一个地方写了它,它没有错误。

代码语言:javascript
复制
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);
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-15 13:55:06

代码中使用的上下文是错误的,因为您使用的是匿名内部类的this。您应该使用活动的上下文,如下所示:

代码语言:javascript
复制
 Intent intent = new Intent(Category.this, NoteEditor.class);

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

代码语言:javascript
复制
public Intent (Context packageContext, Class<?> cls)
票数 1
EN

Stack Overflow用户

发布于 2011-11-15 13:55:01

在您的代码中,this指的是new AdapterView class not a activity

对于意图构造器,您必须传递当前活动或应用程序的基上下文的引用,

替换你的代码,

代码语言:javascript
复制
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);
    }

  });

编辑:你也可以写

代码语言:javascript
复制
Intent intent = new Intent(<your current activity name>.this, NoteEditor.class);
票数 1
EN

Stack Overflow用户

发布于 2011-11-15 13:53:56

您的问题是this应用于匿名内部类,而不是您的Context子类实例。通常,您需要编写YourEnclosingClassName.this来实现这一点。在您的示例中,您需要NodeEditor.this

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8132039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档