我设置了10个按钮,这是十个问题的答案。单击某个按钮时,我在我的onClick方法中设置了一个switch语句,如下所示。我的问题是为所有按钮设置OnClickListeners的最佳方法是什么,我需要将2个数组传递给onClick方法,以便判断它是否正确?另外,我需要返回和整数值。感谢
public void onClick(View v, int[] qaarray, int questionorder) {
int x=0;
switch(v.getId())
{
case R.id.imageButton0:
if(qaarray[0] == questionorder){
//correct
}else{
//incorrect
}
break;
case R.id.imageButton1:
if(qaarray[1] == questionorder){
// correct
}else{
//incorrect
}
break;
case R.id.imageButton2:
if(qaarray[2] == questionorder){
// correct
}else{
//incorrect
}
break;
case R.id.imageButton3:
if(qaarray[3] == questionorder){
// correct
}else{
//incorrect
}
break;
case R.id.imageButton4:
if(qaarray[4] == questionorder){
//correct
}else{
//incorrect
}
break;
case R.id.imageButton5:
if(qaarray[5] == questionorder){
//correct
}else{
//incorrect
}
break;
case R.id.imageButton6:
if(qaarray[6] == questionorder){
//correct
}else{
//incorrect
}
break;
case R.id.imageButton7:
if(qaarray[7] == questionorder){
//correct
}else{
//incorrect
}
break;
case R.id.imageButton8:
if(qaarray[8] == questionorder){
//correct
}else{
//incorrect
}
break;
case R.id.imageButton9:
if(qaarray[9] == questionorder){
//correct
}else{
//incorrect
}
break;
default:
throw new RuntimeException("Unknown button ID");
}
}
答案 0 :(得分:1)
OnClickListener
只为您提供一个参数,即视图:
void onClick(View v);
但是您不必将问题和“顺序”传递给方法以获得您想要的内容。您可以使用的技术之一是View的setTag()
方法:
int[] button = new int[] { R.id.imageButton1, R.id.imageButton2.... };
private class AnswerPair{
public int questionOrder;
public int answer;
}
public void onCreate(Bundle bundle){
for(int i=0; i<NO_OF_BUTTON; i++){
AnswerPair ans = new AnswerPair();
ans.questionOrder = i;
ans.answer = 0; // SET this
getViewById(button[i]).setTag(ans);
getViewById(button[i]).setOnClickListener(this);
}
}
public void onClick(View v){
if (v.getTag() == null) return;
try{
AnswerPair answer = (ans)v.getTag();
// Check answer == question order? index?
}catch(exception e) return;
}
答案 1 :(得分:0)
您可以根据需要实现任意数量的OnClickListener,并为每个按钮分配不同的侦听器。
public void onCreate(Bundle bundle){
setContentView(R.layout.main);
Button b = (Button) findViewById(R.id.myButton)
b.setOnClickListener(new MyListener());
}
private class MyListener implements OnClickListener {
@Override
public void onClick(View v) {
// Your code here
}
}
答案 2 :(得分:0)
我想很多人已经知道了这一点,但你可以使用一个快捷方式,而不是使用onClickListeners的不同实例,并使用setOnClickListener(x)在代码中分配它们。
在你的按钮XML中,给它android:onClick属性,并为它指定一个你喜欢的字符串,例如,
android:onClick="clickOne"
在活动中将此xml设置为其内容视图,使用View参数创建名为clickOne
的方法。
public void clickOne(View view)
当您单击按钮时,将执行此方法的任何操作。