【问题标题】:setOnclickListener(this) ERRORsetOnclickListener(this) 错误
【发布时间】:2016-10-06 21:02:35
【问题描述】:

当我尝试调用 setOnClickListener(this); 'this' 出现错误。我试图将其声明为其他东西,但这没有用。我只是想制作多个 onClick 事件。

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.ImageButton;
import android.view.View.OnClickListener;
import android.view.View;

public class MainActivity extends Activity {

ImageButton button;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageButton one = (ImageButton) findViewById(R.id.img1);
    one.setOnClickListener(this);<-error

     ImageButton two = (ImageButton) findViewById(R.id.img1);
    one.setOnClickListener(this);<-error

    ImageButton three = (ImageButton) findViewById(R.id.img2);
    two.setOnClickListener(this);<-error
  }
 public OnClickListener onClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.img1:
                button.setBackgroundResource(R.mipmap.checkmark);
                break;
            case R.id.img2:
                button.setBackgroundResource(R.mipmap.checkmark);
                break;
            case R.id.img3:
                button.setBackgroundResource(R.mipmap.checkmark);
                break;    
          }
       }
     };
 }

【问题讨论】:

  • 您是否尝试阅读错误消息?是什么让您认为 this 是一个有效的监听器?
  • 应该是one.setOnClickListener(onClickListener)two 也一样。
  • this 没有实现 OnClickListener

标签: java android android-studio


【解决方案1】:

引用您已经创建的 onClickListener 类成员,而不是 this。此外,您的第二个和第三个图像按钮中有一个错误,它没有获得任何点击侦听器或定位错误的资源 ID,这是所有修复

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageButton one = (ImageButton) findViewById(R.id.img1);
    one.setOnClickListener(onClickListener);

     ImageButton two = (ImageButton) findViewById(R.id.img2);
    two.setOnClickListener(onClickListener);

    ImageButton three = (ImageButton) findViewById(R.id.img3);
    three.setOnClickListener(onClickListener);
 }

【讨论】:

    【解决方案2】:

    使用这个:

    ImageButton one = (ImageButton) findViewById(R.id.img1);
    one.setOnClickListener(onClickListener );
    

    【讨论】:

      【解决方案3】:

      将你的类声明更改为:

              public class MainActivity extends Activity implements View.OnClickListener {
      
              ImageButton button;
      
              @Override
              public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_main);
      
                  ImageButton one = (ImageButton) findViewById(R.id.img1);
                  one.setOnClickListener(this);<-error
      
                   ImageButton two = (ImageButton) findViewById(R.id.img1);
                  one.setOnClickListener(this);<-error
      
                  ImageButton three = (ImageButton) findViewById(R.id.img2);
                  two.setOnClickListener(this);<-error
                }
      
                  @Override
                  public void onClick(View v) {
                      switch(v.getId()){
                          case R.id.img1:
                              button.setBackgroundResource(R.mipmap.checkmark);
                              break;
                          case R.id.img2:
                              button.setBackgroundResource(R.mipmap.checkmark);
                              break;
                          case R.id.img3:
                              button.setBackgroundResource(R.mipmap.checkmark);
                              break;    
                        }
                     }
      
               }
      

      【讨论】:

      • 我刚刚编辑了我的答案,谢谢你的纠正。
      【解决方案4】:

      试试这个:

      public class MainActivity extends Activity implements View.OnClickListener
      

      只需在第一行执行此操作,否则一切正常。

      【讨论】:

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