【问题标题】:comparison of two Strings doesn't work in android [duplicate]两个字符串的比较在android中不起作用[重复]
【发布时间】:2011-10-12 18:33:08
【问题描述】:

这是我的代码,Eclipse 没有显示任何错误,程序运行良好,但它根本不符合我的要求:)

    View image_view_danger_rate = (ImageView) findViewById(R.id.origin);
    View image_view_origin = (ImageView) findViewById(R.id.danger_rate);

    String entry_tag = (String) descriptionResultView.findViewById(resID).getTag();

    String dangerous = "dangerous";
    String not_dangerous = "not_dangerous";

    if ( entry_tag == dangerous) {
        image_view_danger_rate.setBackgroundResource(R.drawable.attention);
    }else if ( entry_tag == not_dangerous) {
        image_view_danger_rate.setBackgroundResource(R.drawable.its_ok);
        image_view_origin.setBackgroundResource(R.drawable.artificial);
    }

应用程序应根据 xml 文件中存储的标签在两个图像之间进行选择以在屏幕上弹出。 因此,如果标签显示“危险”,则应显示“注意”图像。 如果标签上写着“not_dangerous”,则应该有“its_ok”-图像。

现在,在没有 if 比较的情况下显示图像效果很好。

如果我将标签打印为字符串,它会起作用,它会根据标签正确打印“dangerous”或“not_dangerous”。

但如果有如上所示的 if 比较,则什么都不会发生,也不会显示图像。

请大家帮忙!!=)

【问题讨论】:

  • +1 以获得详细而完整的问题。
  • 这个问题在这个网站上被问到的次数比我想找到的还要多。请使用搜索功能。
  • @Woot4Moo 重复并不一定很糟糕。 blog.stackoverflow.com/2010/11/…
  • @Woot4Moo 您指向所谓重复问题的链接甚至与此问题无关。
  • @Marcelo 甚至与本网站上关于人们不知道如何在 java 中进行字符串比较的任何其他示例有何微妙不同?

标签: java android string


【解决方案1】:

使用string1.equalsIgnoreCase("something).equals("Something");

使用 java 中的==(用于字符串),您正在比较它们是否具有相同的引用。就像你做的那样,测试它们是否都是字符串对象。

【讨论】:

  • 我刚刚学到了非常重要的东西! =D 它对我有用...感谢您的快速回答!
【解决方案2】:

在 java 中,a==b 用于比较 2 个引用,而不是对象本身。

因此,如果您有 2 个要比较的字符串,请在 String 上使用 equals() 方法。例如

boolean resultOfComparison=stringA.equals(stringB);

【讨论】:

  • 感谢大家,这就是解决方案!
【解决方案3】:

使用

entry_tag.equals(dangerous)

您正在比较实际的 String 对象,而不是它们的内容。 在 Java 中,运算符没有重载,因此 == 不能用于比较字符串。

【讨论】:

  • 感谢大家,这就是解决方案!
【解决方案4】:

在Java中,如果要比较Strings,需要使用equals()

if (entry_tag.equals(dangerous)) {
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 2012-06-19
    • 2011-10-31
    相关资源
    最近更新 更多