Java 超级监听器

Java 超级监听器,java,android,Java,Android,为什么我不能在下面的代码中将此作为上下文传递? 我犯了一个错误 构造函数数据管理器(new View.OnClickListener(){})未定义 我是android编程新手,若这个问题很奇怪,那个么很抱歉 任何帮助都会很好 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-

为什么我不能在下面的代码中将此作为上下文传递? 我犯了一个错误

构造函数数据管理器(new View.OnClickListener(){})未定义

我是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);
}
    ....

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

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

我认为您需要使用
getApplicationContext();
“this”是对包含类的当前实例的引用,而不是
this

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


我相信您可能希望传递定义onClickListener的活动的上下文?如果是这样,请使用
MyActivity。此
,其中MyActivity是活动类的名称。

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

setOnClickListener
添加此行:

final Context ThisContext = this;
在你的听众中使用这个

DataManager dm=new DataManager(ThisContext);

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

DataManager dm=new DataManager(YOUR_CLASS_NAME.this);
您的类名称应为活动类名称。即

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

        }
    });

  }
}

试试看,让我知道进展如何

太好了,,,我太爱你了。