2012-09-13 95 views
-1

我正在尝试一个简单的检查。如果字符串名称语言环境具有“es”作为值。正在执行不寻常的android逻辑运算符不能比较两个字符串

public String locale = 
    Locale.getDefault().getLanguage().toLowerCase().toString(); 

// ... 

Log.v(tag, "Idioma del sistema: «" + locale +"»"); 
if (locale != "es") { 
    showDialog(R.string.warningTitleDialog, 
     "We are sorry that this tool is only available in Spanish " + 
     "language. See Author menu item for more information. [" + 
     locale + "]"); 
    locale = "en"; 
} 

adb logcat显示为“es”串“区域”,但条件内码的内容。

回答

2

看来这个问题不是Android或逻辑这是在JAVA中。 试试这个,告诉我们发生了什么

if(!locale.equals("en")) 
{ 
    //Your Code 
} 
+1

==和!=运算符比较地址 – nandeesh

+0

是的,这就是为什么他总是错误的原因。 –

2

切勿使用!=或==在伴随字符串。试试equals方法是这样的:

if(locale.equals("es")) 

如果字符串本地化和“ES”包含相同字符序列 这将返回true。因为equals()方法比较String对象内的字符。 ==运算符比较两个对象引用以查看它们是否引用同一个实例。

有关更多信息,请参阅What is the difference between == vs equals() in Java?