comparison of two Strings doesn't work in android
本问题已经有最佳答案,请猛点这里访问。
这是我的代码,Eclipse没有显示任何错误,程序运行良好,但它不能完全满足我的需要:)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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文件中的标记。所以,如果标签上写着"危险",那么应该显示"注意"的图像。如果标签上写着"不危险",就应该有"它的好"的图片。
现在,在不进行中频比较的情况下显示图像非常有效。
如果我把标签打印成一个字符串,它就会工作,它会根据标签正确地打印"危险"或"不危险"。
但是如果有一个如上图所示的if比较,则不会发生任何事情,也不会显示任何图像。
请任何人帮忙!=)
使用
在爪哇中,用EDCOX1×2(字符串)比较它们是相同的引用。就像你做的测试,如果它们都是字符串对象。
在Java中,A==B用于比较2个引用,而不是对象本身。
因此,如果有两个要比较的字符串,请对字符串使用equals()方法。例如:
1 | boolean resultOfComparison=stringA.equals(stringB); |
使用
1 | entry_tag.equals(dangerous) |
您正在比较实际的字符串对象,而不是它们的内容。在爪哇中,运算符不重载,所以S==不能用于比较字符串。
在Java中,如果要比较字符串,则需要使用EDCOX1×3:
1 2 | if (entry_tag.equals(dangerous)) { } |
号