【发布时间】:2016-02-21 20:06:09
【问题描述】:
所以,我创建了一个 java 类来实现 onClickListener,并在这个类中编写了 onClick 公共方法。在这个方法之外,我创建了一个 int 对象,我想在 onClick 方法中修改这个对象。我通过检查其他类似的 SO 问题进行了很多研究,并尝试了很多方法,例如将对象创建为 public int,或将其设为 private int 并有另一种方法来更改它,然后在 onClick 中调用此方法。但是,似乎没有任何效果。
下面显示的代码将 int 对象创建为 private int 并命名为 turn。为了在onClick 中更改它,我首先创建了一个名为changeTurn 的公共方法来修改它,然后我在onClick 中调用此方法。
public class TicTacToe implements View.OnClickListener {
Button buttons[] = new Button[9];
TextView result;
public TicTacToe(Button[] buttonList, TextView text) {
buttons = buttonList;
result = text;
}
//public void
private int turn = 1; // The object that needs to be modified in onCLick
@Override
public void onClick(View v) {
Button b = (Button) v;
if((((Button) v).getText() != "X") && (((Button) v).getText() != "O")) {
if(this.turn == 1) {
b.setText("X");
changeTurn(); // ***Should change the value of turn***
result.setText("Turn is: " + this.turn);
}
if(this.turn == 2) {
b.setText("O");
changeTurn(); // ***Should change the value of turn***
result.setText("Turn is: " + turn);
}
}
}
public void changeTurn() {
if(this.turn == 1) {
this.turn = 2;
}
if(this.turn == 2) {
this.turn = 1;
}
}
}
根据我的尝试,每次单击我的 9 个按钮中的任何一个时,程序只会进入第一个 if 内,这些按钮的 setOnClickListeners 连接到这个 onClick 方法。另外,turn的值在我打印出来的时候一直是1,基本上就是onClick方法里面的changeTurn没有改变它的值。
关于应用程序的一般信息:我正在尝试在 3x3 网格中制作一个带有 9 个按钮的井字游戏。由于会有 2 名玩家,我试图使用这个 turn 整数来跟踪轮到谁按下按钮。如果 turn 为 1,则按钮的文本变为 X,如果 turn 为 2,则变为 O。现在,每次我按下按钮时,它总是变为 X。
如果有任何帮助或想法,我将不胜感激。
【问题讨论】:
-
嘿@Klaus,你能告诉我你如何为你的按钮设置点击监听器吗?
-
我这样做的方法是创建一个井字游戏对象,然后将其传递给主服务器上的 setOnClickListener()。所以像这样:井字游戏 tic = new TicTacToe(buttons, text);按钮一 = (Button) findViewById(R.id.button1); one.setOnClickListener(tic);
标签: java android onclick android-button