如果计数器为20或更高,我希望输出为绿色,如果低于20,我希望输出为红色。这是我到目前为止的代码,它不起作用。
add1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
counter = counter += 1;
if (counter >= 20) {
display.setText(Color.GREEN);
//display.setText("" + counter);
}
else if (counter < 20) {
display.setTextColor(Color.RED);
//display.setText("" + counter);
}
display.setText("" + counter);
}
});
sub1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
counter = counter -= 1;
if (counter >= 20) {
display.setText(Color.GREEN);
//display.setText("" + counter);
}
else if (counter < 20){
display.setTextColor(Color.RED);
//display.setText("" + counter);
}
display.setText("" + counter);
}
});
答案 0 :(得分:2)
您的代码存在一些问题:
counter += 1
代替counter = counter += 1
。减法相同。setTextColor()
代替setText()
。add1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter += 1;
updateDisplay();
}
});
sub1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter -= 1;
updateDisplay();
}
});
并在某处使用此方法:
void updateDisplay () {
display.setTextColor(counter < 20 ? Color.RED : Color.GREEN);
display.setText("" + counter);
}
答案 1 :(得分:0)
如果您尝试更改名为display的textview的颜色,则需要切换:
display.setText(Color.GREEN);
到
display.setTextColor(Color.GREEN);
您也可以将else if
改为else
。
答案 2 :(得分:0)
好吧,
正如评论中所提到的,您正在尝试将文本设置为Color.GREEN
,这是一个表示绿色的常量整数,而您应该像在RED情况下那样做
display.setTextColor(Color.GREEN);
另一方面,您不应该在该声明中使用else if
。
由于您的第一个if
要求,我的计数器是20还是更多,将颜色更改为绿色,如果颜色不足,请更改为红色。
如果你愿意的话,你只有2个案例与变量的整个“光谱”重叠。
在这种情况下,你应该使用if
和else
counter = counter += 1;
if (counter >= 20) {
display.setTextColor(Color.GREEN);
//display.setText("" + counter);
}
else { // not 20 or above, meaning < 20
display.setTextColor(Color.RED);
//display.setText("" + counter);
}
display.setText("" + counter);
如果您有更多案例, else if
会很有用,例如
counter = counter += 1;
if (counter >= 20) {
display.setText(Color.GREEN);
//display.setText("" + counter);
}
else if (counter < 20 && counter >= 10) { // counter is between 10 and 20, not including 20
display.setTextColor(Color.RED);
//display.setText("" + counter);
}
else { // under 10, not including 10
display.setTextColor(Color.WHITE);
//display.setText("" + counter);
display.setText("" + counter);
尝试始终使用else
语句来检查非法值(特别是如果它是来自用户的输入)可能是一种好习惯。甚至只是为了进行健全性检查,或者错误处理和打印。