当我尝试调用setOnClickListener(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;
}
}
};
}
答案 0 :(得分:2)
而不是this
,引用您已创建的onClickListener
班级成员。你的第2和第3个图像按钮中有一个错误,它没有获得任何clicklistener或定位错误的资源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);
}
答案 1 :(得分:1)
使用此:
ImageButton one = (ImageButton) findViewById(R.id.img1);
one.setOnClickListener(onClickListener );
答案 2 :(得分:0)
将您的班级声明更改为:
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;
}
}
}
答案 3 :(得分:0)
试试这个:
public class MainActivity extends Activity implements View.OnClickListener
只需在第一行执行此操作,否则一切正常。