.getLabel函数不适用于黑莓9800

时间:2012-08-08 08:18:06

标签: java blackberry

我遇到触发计时器的按钮问题。如果我拿走所有的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
        }
    }
});  

我希望有人可以提供帮助我无法在任何地方找到答案。

1 个答案:

答案 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()) {}

有关herehere中的String比较的更多信息。

我希望您的应用只需要英文本地化。使用Camel case表示法进行变量命名更具可读性。