java - .getLabel 函数在黑莓 9800 上不起作用

标签 java blackberry

我在使用触发计时器的按钮时遇到问题。如果我去掉所有的 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 比较的更多信息 herehere .

我希望您的应用程序只需要英语本地化。使用驼峰式命名法来命名变量更具可读性。

关于java - .getLabel 函数在黑莓 9800 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11860419/

相关文章:

Java正则表达式在字符串中查找符号

Java Attach API : VirtualMachine. list() 返回空列表?

html - 绝对位置在黑莓移动应用程序中不起作用

黑莓 RichTextField 验证

android - 黑莓的默认浏览器名称是什么

java - 我可以同时使用 .equal() 比较两个或多个事物吗

java - 如何在 Java selenium 的 POM-TestNG 类中使用 SELECT 语句

java - com/fasterxml/jackson/databind/ObjectMapper 与 Maven 的 NoClassDefFoundError

java - 黑莓优化 - 来自磁盘或 RAM 的背景图像?

java - 如何处理黑莓上的屏幕旋转