我遇到触发计时器的按钮问题。如果我拿走所有的if语句就可以了,所以定时器代码没有任何问题。这个相同的代码在我尝试过8900,风暴等所有其他手机中都能正常工作。
仅在9800上它失败并运行到if语句的末尾。
getLabel有变化吗?
我的代码是:
startbtn.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field field1, int context) {
/////sound file
try {
Manager.playTone(ToneControl.C4, 100, 50);
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (startbtn.getLabel() == "START"){
startbtn.setLabel("STOP!");
startTimer();
} else if (startbtn.getLabel() == "STOP!"){
startbtn.setLabel("RESET");
stopTimer();
} else if (startbtn.getLabel() == "RESET"){
dismiss();
//// RESET SCREEN AFTER
}
}
});
我希望有人可以提供帮助我无法在任何地方找到答案。
答案 0 :(得分:2)
我会担心Java中字符串的正确比较是str1.equals(str2)
,并且通常还有前置条件str1 != null
。
但是在与你的情况类似的情况下有例外。只需介绍常量:
private static final String START_LABEL = "START!";
private static final String STOP_LABEL = "STOP!";
private static final String RESET_LABEL = "RESET";
在if语句中使用常量。像这样:
if (START_LABEL == startbtn.getLabel()) {}
我希望您的应用只需要英文本地化。使用Camel case表示法进行变量命名更具可读性。