两个字符串的比较在android中不起作用

时间:2011-07-25 16:50:04

标签: java android string

这是我的代码,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”-image。

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

如果我将标签打印成字符串,它会起作用,它会正确打印“危险”或“not_dangerous”,具体取决于标签。

但如果如上所示存在if-comparison,则不会发生任何事情,也不会显示图像。

请有人帮忙!! =)

4 个答案:

答案 0 :(得分:37)

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

对于java中的==(对于字符串),您要比较它们是相同的引用。就像你做的那样,如果它们都是字符串对象,那就是测试。

答案 1 :(得分:11)

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

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

boolean resultOfComparison=stringA.equals(stringB);

答案 2 :(得分:5)

使用

entry_tag.equals(dangerous)

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

答案 3 :(得分:1)

在Java中,如果要比较字符串,则需要使用equals()

if (entry_tag.equals(dangerous)) {
}