我在使用触发计时器的按钮时遇到问题。如果我去掉所有的 if 语句,它就可以正常工作,所以计时器代码没有任何问题。相同的代码在我尝试过的所有其他手机中都可以正常工作,如 8900、storm 等。
只有在 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
}
}
});
我希望有人能帮助我,我在任何地方都找不到答案。
最佳答案
我担心你,Java 中字符串的正确比较是 str1.equals(str2)
并且通常还有前提条件 str1 != null
。
但与您类似的情况也有异常(exception)。只需引入常量:
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()) {}
有关 Java 中 String
比较的更多信息 here和 here .
我希望您的应用程序只需要英语本地化。使用驼峰式命名法来命名变量更具可读性。
关于java - .getLabel 函数在黑莓 9800 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11860419/