有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java OnClickListener超级

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

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

我是安卓编程新手,若这个问题很奇怪,那个么很抱歉

任何帮助都会很好

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

共 (5) 个答案

  1. # 1 楼答案

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

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

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

  2. # 2 楼答案

    setOnClickListener之前添加此行:

    final Context ThisContext = this;
    

    在你的听众中使用这个

    DataManager dm=new DataManager(ThisContext);
    
  3. # 3 楼答案

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

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

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

  4. # 4 楼答案

    只要写MyClassName.this,假设“MyClassName”是活动的名称

  5. # 5 楼答案

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

    DataManager dm=new DataManager(YOUR_CLASS_NAME.this);
    

    您的\u类\u名称应为活动类名称。即

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

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