首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnClickListener超级

OnClickListener超级
EN

Stack Overflow用户
提问于 2012-10-19 03:50:39
回答 5查看 204关注 0票数 2

为什么我不能在下面的代码中将this作为上下文传递?我收到错误消息

The constructor DataManager(new View.OnClickListener(){}) is undefined

我是android编程的新手,所以如果问题很奇怪,很抱歉!

任何帮助都是最好的。

代码语言:javascript
复制
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            Log.d("vkx", "clk insert");
String qq="insert into users(id,name,password) values ('6','usrs','passs')";
            DataManager dm=new DataManager(this);
            dm.SqliteExecutenonquery(qq);

            Log.d("vkx", "clk insert done");
        }
    });

代码语言:javascript
复制
        public DataManager(Context cont) {
    super(cont, DBname, null, DBver);
}
    ....
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-19 04:03:13

因此,在实例化DataManager时,并不是将上下文作为参数传递,而是实际传递OnClickListener的实例。

代码语言:javascript
复制
DataManager dm=new DataManager(YOUR_CLASS_NAME.this);

YOUR_CLASS_NAME应该是活动类名。即

代码语言:javascript
复制
class MyClass extends Activity{

  public onCreate(Bundle savedInstanceState){
    Button btn = new Button();
    btn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
           DataManager dm=new DataManager(MyClass.this);

        }
    });

  }
}

试一试,让我知道它的进展如何

票数 0
EN

Stack Overflow用户

发布于 2012-10-19 03:51:35

您已经编写了匿名类new OnClickListener() {

没有将OnClickListener作为类型参数的DataManager类的构造函数。

我认为您需要使用getApplicationContext();而不是this

票数 0
EN

Stack Overflow用户

发布于 2012-10-19 03:58:21

"this“是对包含类的当前实例的引用。

在使用"this“的地方,它指的是onClickListener类型的匿名内部类的实例。

我相信您可能想要传递定义onClickListener的活动的上下文?如果是,请使用MyActivity.this,其中MyActivity是活动类的名称。

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

https://stackoverflow.com/questions/12962612

复制
相关文章

相似问题

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