0

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

我希望有人可以帮助我在任何地方都找不到答案。

4

1 回答 1

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

更多关于StringJava 的比较herehere

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

于 2012-08-08T08:41:05.700 回答