【问题标题】:Android setOnClickListener(this) ErrorAndroid setOnClickListener(this) 错误
【发布时间】:2012-04-02 16:25:07
【问题描述】:

我在我的 Android 应用程序中创建了一个按钮,我尝试将 onclick 列表器设置为运行 onClick 方法,如下所示

...
Button btn_ok;
    btn_ok = (Button)findViewById(R.id.button1);
    btn_ok.setOnClickListener(this);


}
public void onClick() {
     EditText uN = (EditText) findViewById(R.id.EditText04);
     uN.setText("Clicked!");
    }

但 Eclipse 显示错误并说“setOnClickListener”需要转换参数。施法后是这样的

btn_ok.setOnClickListener((OnClickListener) this);

然后当我运行程序时,模拟器说“程序已意外停止”... 我怎么解决这个问题 ?

【问题讨论】:

  • 您很可能导入/实现了错误的onClickListener,确保它是View 的那个,而不是DialogInterface 的那个。

标签: java android


【解决方案1】:

确保您的类实现了 View.OnClickListener。不能只添加onClick方法,必须实现接口

【讨论】:

    【解决方案2】:

    您的onClick 方法的签名是错误的,这让我相信您实际上并没有实现接口View.OnClickListener

    签名应该是:

    public void onClick(View v)
    {
        //your implementation, v is your button that was clicked
    }
    

    请注意,被单击的视图是作为参数传入的,因此无需从您的 onClick 方法中调用 findViewById

    【讨论】:

      【解决方案3】:

      从您的活动中实现 onClickListener 并覆盖该方法:

      @override
      
      public void onClick(View v)
      {
          switch(v.getId()){
            case R.id.button1:
               EditText uN = (EditText) findViewById(R.id.EditText04);
               uN.setText("Clicked!");
               break;
             case default:
               break;
       }
      }
      

      希望对你有帮助。

      【讨论】:

        【解决方案4】:

        setOnClickListenerOnClickListener 实例作为参数,OnClickListener 是一个包含onClick() 方法的接口,您在此处传递 setOnClickListener(this);当前上下文。所以你有两个选择,要么在你的活动中实现OnClickListener,然后以这种方式使用:

          this.btn_ok.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
            //do your work here
            }
          });
        

        【讨论】:

          【解决方案5】:

          确保您正在实现接口 View.OnClickListener 并将 View 传递给 onClick 方法

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-02
            • 2013-11-25
            • 1970-01-01
            相关资源
            最近更新 更多