Android上一个onClicklistener中的多个图像按钮

Android上一个onClicklistener中的多个图像按钮,android,imagebutton,onclicklistener,Android,Imagebutton,Onclicklistener,目标:能够点击按钮,使图片改变并保持在该图像上。 问题是我无法更改imagebutton9上的图片。当我击中 imagebutton9更改imagebutton1上的图片。 所以问题是,有没有人看到是什么导致了这种情况的发生 包com.example.tictactoe import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import

目标:能够点击按钮,使图片改变并保持在该图像上。 问题是我无法更改imagebutton9上的图片。当我击中 imagebutton9更改imagebutton1上的图片。 所以问题是,有没有人看到是什么导致了这种情况的发生

包com.example.tictactoe

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Toast;

public class TicTacMain extends Activity implements View.OnClickListener {
/*****************************************************
 * Makes imagebuttons and views.
 *****************************************************/
private ImageButton imageButton1;
private ImageView imageView1;
private ImageButton imageButton2;
private ImageView imageView2;
private ImageButton imageButton3;
private ImageView imageView3;
private ImageButton imageButton4;
private ImageView imageView4;
private ImageButton imageButton5;
private ImageView imageView5;
private ImageButton imageButton6;
private ImageView imageView6;
private ImageButton imageButton7;
private ImageView imageView7;
private ImageButton imageButton8;
private ImageView imageView8;
private ImageButton imageButton9;
private ImageView imageView9;
/*****************************************************
 * Makes imagebuttons and views.
 *****************************************************/

/*** alternate between X and O ***/
private int changer = 0;
/*** alternate between X and O ***/

/*****************************************************
 * Stops further change of pictures after first change
 *****************************************************/
private int antiChange1 = 0;
private int antiChange2 = 0;
private int antiChange3 = 0;
private int antiChange4 = 0;
private int antiChange5 = 0;
private int antiChange6 = 0;
private int antiChange7 = 0;
private int antiChange8 = 0;
private int antiChange9 = 0;

/*****************************************************
 * Stops further change of pictures after first change
 *****************************************************/
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tic_tac_main);

    Toast.makeText(this, "Inni onCreate", Toast.LENGTH_LONG).show();

    Toast.makeText(this, "Øverst onClick", Toast.LENGTH_LONG).show();
    this.imageButton1 = (ImageButton) this.findViewById(R.id.imageButton1);
    this.imageButton1.setOnClickListener((OnClickListener) this);

    this.imageButton2 = (ImageButton) this.findViewById(R.id.imageButton2);
    this.imageButton2.setOnClickListener((OnClickListener) this);

    this.imageButton3 = (ImageButton) this.findViewById(R.id.imageButton3);
    this.imageButton3.setOnClickListener((OnClickListener) this);

    this.imageButton4 = (ImageButton) this.findViewById(R.id.imageButton4);
    this.imageButton4.setOnClickListener((OnClickListener) this);

    this.imageButton5 = (ImageButton) this.findViewById(R.id.imageButton5);
    this.imageButton5.setOnClickListener((OnClickListener) this);

    this.imageButton6 = (ImageButton) this.findViewById(R.id.imageButton6);
    this.imageButton6.setOnClickListener((OnClickListener) this);

    this.imageButton7 = (ImageButton) this.findViewById(R.id.imageButton7);
    this.imageButton7.setOnClickListener((OnClickListener) this);

    this.imageButton8 = (ImageButton) this.findViewById(R.id.imageButton8);
    this.imageButton8.setOnClickListener((OnClickListener) this);

    this.imageButton9 = (ImageButton) this.findViewById(R.id.imageButton9);
    this.imageButton9.setOnClickListener((OnClickListener) this);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.tic_tac_main, menu);
    return true;
}

public int tellerbytter() {
    Toast.makeText(this, "Tellerbytter", Toast.LENGTH_LONG).show();
    if (changer == 0) {
        return changer = 1;
    } else if (changer == 1) {
        return changer = 0;
    }
    return -1;
}

// ///imageButton1.setOnClickListener(new OnClickListener());

// @Override
public void onClick(View v) {

    switch (v.getId()) {

    case R.id.imageButton1:
        if (v.getId() == R.id.imageButton1) {
            if (changer == 1 && antiChange1 == 0) {
                imageView1 = (ImageView) findViewById(R.id.imageButton1);
                imageView1.setImageResource(R.drawable.o);
                tellerbytter();
                antiChange1++;
                break;

            } else if (changer == 0 && antiChange1 == 0) {
                imageView1 = (ImageView) findViewById(R.id.imageButton1);
                imageView1.setImageResource(R.drawable.x1);
                tellerbytter();
                antiChange1++;
                break;
            }
        }

    case R.id.imageButton2:
        if (v.getId() == R.id.imageButton2) {
            if (changer == 1 && antiChange2 == 0) {
                imageView2 = (ImageView) findViewById(R.id.imageButton2);
                imageView2.setImageResource(R.drawable.o);
                tellerbytter();
                antiChange2++;
                break;

            } else if (changer == 0 && antiChange2 == 0) {
                imageView2 = (ImageView) findViewById(R.id.imageButton2);
                imageView2.setImageResource(R.drawable.x1);
                tellerbytter();
                antiChange2++;
                break;
            }
        }
    case R.id.imageButton3:
        if (v.getId() == R.id.imageButton3) {
            if (changer == 1 && antiChange3 == 0) {
                imageView3 = (ImageView) findViewById(R.id.imageButton3);
                imageView3.setImageResource(R.drawable.o);
                tellerbytter();
                antiChange3++;
                break;

            } else if (changer == 0 && antiChange3 == 0) {
                imageView3 = (ImageView) findViewById(R.id.imageButton3);
                imageView3.setImageResource(R.drawable.x1);
                tellerbytter();
                antiChange3++;
                break;
            }
        }

    case R.id.imageButton4:
        if (v.getId() == R.id.imageButton4) {
            if (changer == 1 && antiChange4 == 0) {
                imageView4 = (ImageView) findViewById(R.id.imageButton4);
                imageView4.setImageResource(R.drawable.o);
                tellerbytter();
                antiChange4++;
                break;

            } else if (changer == 0 && antiChange4 == 0) {
                imageView4 = (ImageView) findViewById(R.id.imageButton4);
                imageView4.setImageResource(R.drawable.x1);
                tellerbytter();
                antiChange4++;
                break;
            }
        }
    case R.id.imageButton5:
        if (v.getId() == R.id.imageButton5) {
            if (changer == 1 && antiChange5 == 0) {
                imageView5 = (ImageView) findViewById(R.id.imageButton5);
                imageView5.setImageResource(R.drawable.o);
                tellerbytter();
                antiChange5++;
                break;

            } else if (changer == 0 && antiChange5 == 0) {
                imageView5 = (ImageView) findViewById(R.id.imageButton5);
                imageView5.setImageResource(R.drawable.x1);
                tellerbytter();
                antiChange5++;
                break;
            }
        }
    case R.id.imageButton6:
        if (v.getId() == R.id.imageButton6) {
            if (changer == 1 && antiChange6 == 0) {
                imageView6 = (ImageView) findViewById(R.id.imageButton6);
                imageView6.setImageResource(R.drawable.o);
                tellerbytter();
                antiChange6++;
                break;

            } else if (changer == 0 && antiChange6 == 0) {
                imageView6 = (ImageView) findViewById(R.id.imageButton6);
                imageView6.setImageResource(R.drawable.x1);
                tellerbytter();
                antiChange6++;
                break;
            }
        }
    case R.id.imageButton7:
        if (v.getId() == R.id.imageButton7) {
            if (changer == 1 && antiChange7 == 0) {
                imageView7 = (ImageView) findViewById(R.id.imageButton7);
                imageView7.setImageResource(R.drawable.o);
                tellerbytter();
                antiChange7++;
                break;

            } else if (changer == 0 && antiChange7 == 0) {
                imageView7 = (ImageView) findViewById(R.id.imageButton7);
                imageView7.setImageResource(R.drawable.x1);
                tellerbytter();
                antiChange7++;
                break;
            }
        }
    case R.id.imageButton8:
        if (v.getId() == R.id.imageButton8) {
            if (changer == 1 && antiChange8 == 0) {
                imageView8 = (ImageView) findViewById(R.id.imageButton8);
                imageView8.setImageResource(R.drawable.o);
                tellerbytter();
                antiChange8++;
                break;

            } else if (changer == 0 && antiChange8 == 0) {
                imageView8 = (ImageView) findViewById(R.id.imageButton8);
                imageView8.setImageResource(R.drawable.x1);
                tellerbytter();
                antiChange8++;

                break;
            }
        }
    case R.id.imageButton9:
        Toast.makeText(this, "utenfor knapp9", Toast.LENGTH_LONG).show();
        if (v.getId() == R.id.imageButton9) {
            Toast.makeText(this, "knapp9", Toast.LENGTH_LONG).show();
            if (changer == 1 && antiChange9 == 0) {
                imageView9 = (ImageView) findViewById(R.id.imageButton9);
                imageView9.setImageResource(R.drawable.o);
                tellerbytter();
                antiChange9++;
                break;

            } else if (changer == 0 && antiChange9 == 0) {
                imageView1 = (ImageView) findViewById(R.id.imageButton1);
                imageView1.setImageResource(R.drawable.x1);
                tellerbytter();
                antiChange9++;
                break;
            }
        }

    }
}
然后是项目的XML


更改:

} else if (changer == 0 && antiChange9 == 0) {
    imageView1 = (ImageView) findViewById(R.id.imageButton1);
    imageView1.setImageResource(R.drawable.x1);
    tellerbytter();
    antiChange9++;
    break;
}
致:

在第九个imagebutton的
语句中


此外,所有
if(v.getId()==R.id.imageButton1){
等语句是不需要的,因为在开关盒中已经有了它们,它们可以做同样的事情。

要么是changer!=0,要么是antiChange9!=0Hi。我试过了,效果不错。现在我可以先点击它,然后点击画好的那个。但是如果我点击另一个,然后点击按钮9,它就会改变按钮1。有什么建议吗?非常感谢!T他解决了我的问题。现在我可以继续我的项目了。我很快就会看你的书:)看起来像一本有趣的书!
} else if (changer == 0 && antiChange9 == 0) {
    imageView1 = (ImageView) findViewById(R.id.imageButton1);
    imageView1.setImageResource(R.drawable.x1);
    tellerbytter();
    antiChange9++;
    break;
}
} else if (changer == 0 && antiChange9 == 0) {
    imageView1 = (ImageView) findViewById(R.id.imageButton9);
    imageView1.setImageResource(R.drawable.x1);
    tellerbytter();
    antiChange9++;
    break;
}