2

为什么我不能this在以下代码中作为上下文传递?我收到错误

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

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

任何帮助都会很棒。

    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");
        }
    });

我有我的DataManger

        public DataManager(Context cont) {
    super(cont, DBname, null, DBver);
}
    ....
4

5 回答 5

0

你写了匿名类new OnClickListener() {

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

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

于 2012-10-18T19:51:34.667 回答
0

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

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

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

于 2012-10-18T19:58:21.030 回答
0

只需编写MyClassName.this,假设“MyClassName”是您的活动名称。

于 2012-10-18T19:59:54.907 回答
0

setOnClickListener添加此行之前:

final Context ThisContext = this;

在你的听众中使用这个

DataManager dm=new DataManager(ThisContext);
于 2012-10-18T20:00:50.407 回答
0

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

DataManager dm=new DataManager(YOUR_CLASS_NAME.this);

YOUR_CLASS_NAME 应该是 Activity 类名。IE

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

        }
    });

  }
}

试试这个,让我知道它是怎么回事

于 2012-10-18T20:03:13.030 回答