Android Studio- 单击按钮多次更改按钮文本
Android Studio- Click button to change the buttons text multiple times
我一直在尝试通过每次点击来更改按钮的文本,并且在第一次点击按钮时就成功了。一直在玩 button.setTag 和 button.getTag 以尝试通过按钮点击的状态进行转换。
正是我想做的...
按钮在开始时默认为“ ”
第一次点击文本转到 "X"
第二次点击文本转到 "O"
第三次单击文本转到“”//尚未尝试启用此功能
到目前为止,这是我的代码..
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Button button = (Button) findViewById(R.id.button);
button.setTag(0);
button.setText("");
final int status = (Integer) view.getTag();
switch (status) {
case 0:
button.setText("X");
view.setTag(1); //pause
break;
case 1:
button.setText("O");
view.setTag(0); //pause
break;
}
}
});//if you know why android studio makes me add this get bonus points
}
目前每次单击按钮时都会将按钮标签设置为 0:
button.setTag(0);
更改为:
if(button.getTag() == null){
button.setTag(0);
}
它应该可以工作。
int count = 2;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Button button = (Button) findViewById(R.id.button);
count++;
if(count%3==0)button.setText("X");
else if(count%3==1)button.setText("O");
else button.setText("");
}
}
});
}
这个怎么样?
此外,我建议您在 onCreate 中投射所有小部件,这样您每个生命周期只需执行一次。
这是您的问题:
button.setTag(0);
button.setText("");
final int status = (Integer) view.getTag();
所以 status 将永远是 0
。
将您的方法更改为:
button.setTag(0);//do this when you first initialize the button. You can even specify this in Xml with android:tag="0"
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Button button = (Button) findViewById(R.id.button);
button.setText("");
final int status = (Integer) view.getTag();
switch (status) {
case 0:
button.setText("X");
view.setTag(1); //pause
break;
case 1:
button.setText("O");
view.setTag(0); //pause
break;
}
}
});
为了清楚起见,我还建议将标签更改为静态变量。为此,声明这些 class 常量:
public static final int STATE_PAUSED = 0;
public static final int STATE_UNPAUSED = 1;
现在您可以使用以下命令设置标签:
view.setTag(STATE_PAUSED);
或
view.setTag(STATE_UNPAUSED);
button.setTag(0);
button.setText("");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Button button = (Button) findViewById(R.id.button);
button.setText("");
final int status = (Integer) view.getTag();
switch (status) {
case 0:
button.setText("X");
view.setTag(1); //pause
break;
case 1:
button.setText("O");
view.setTag(2); //pause
break;
case 2:
button.setText("");
view.setTag(0);
}
}
});
}
我一直在尝试通过每次点击来更改按钮的文本,并且在第一次点击按钮时就成功了。一直在玩 button.setTag 和 button.getTag 以尝试通过按钮点击的状态进行转换。
正是我想做的...
按钮在开始时默认为“ ” 第一次点击文本转到 "X" 第二次点击文本转到 "O" 第三次单击文本转到“”//尚未尝试启用此功能
到目前为止,这是我的代码..
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Button button = (Button) findViewById(R.id.button);
button.setTag(0);
button.setText("");
final int status = (Integer) view.getTag();
switch (status) {
case 0:
button.setText("X");
view.setTag(1); //pause
break;
case 1:
button.setText("O");
view.setTag(0); //pause
break;
}
}
});//if you know why android studio makes me add this get bonus points
}
目前每次单击按钮时都会将按钮标签设置为 0:
button.setTag(0);
更改为:
if(button.getTag() == null){
button.setTag(0);
}
它应该可以工作。
int count = 2;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Button button = (Button) findViewById(R.id.button);
count++;
if(count%3==0)button.setText("X");
else if(count%3==1)button.setText("O");
else button.setText("");
}
}
});
}
这个怎么样? 此外,我建议您在 onCreate 中投射所有小部件,这样您每个生命周期只需执行一次。
这是您的问题:
button.setTag(0);
button.setText("");
final int status = (Integer) view.getTag();
所以 status 将永远是 0
。
将您的方法更改为:
button.setTag(0);//do this when you first initialize the button. You can even specify this in Xml with android:tag="0"
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Button button = (Button) findViewById(R.id.button);
button.setText("");
final int status = (Integer) view.getTag();
switch (status) {
case 0:
button.setText("X");
view.setTag(1); //pause
break;
case 1:
button.setText("O");
view.setTag(0); //pause
break;
}
}
});
为了清楚起见,我还建议将标签更改为静态变量。为此,声明这些 class 常量:
public static final int STATE_PAUSED = 0;
public static final int STATE_UNPAUSED = 1;
现在您可以使用以下命令设置标签:
view.setTag(STATE_PAUSED);
或
view.setTag(STATE_UNPAUSED);
button.setTag(0); button.setText("");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Button button = (Button) findViewById(R.id.button);
button.setText("");
final int status = (Integer) view.getTag();
switch (status) {
case 0:
button.setText("X");
view.setTag(1); //pause
break;
case 1:
button.setText("O");
view.setTag(2); //pause
break;
case 2:
button.setText("");
view.setTag(0);
}
}
});
}