2016-08-20 18 views
0

我在这里面临奇怪的情况。我从PreferenceManager获得的字符串(例如“C”)不等于“C”

在关闭我的偏好活动后调用以下例程。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
String tmp = preferences.getString("unit", "C"); 
CommonTool.temperatureUnit = tmp; 

它是什么,让我从偏好活动做出,我把它存储到一个名为CommonTool.temperatureUnit全局变量的设置。在这种情况下,值“C”被分配给它。

现在好了。

在CommonTool类中,我有一个返回摄氏温度或华氏温度的函数,取决于用户的偏好,我从偏好活动中获得。

public static String getCommonTemperature(int celsius) { 
    int ret; 

    if (temperatureUnit == "C") { 
     ret = celsius; 
    } 
    else { 
     ret = (9/5) * celsius + 32; 
    } 

    return Integer.toString(ret); 
} 

的事情是..它让陷入else部分的它,而temperatureUnit包含“C”。

Capture while in debug mode

没有人有任何想法? 在此先感谢。

+0

你以往任何时候都偏好设定为F例如?怎么样?哪里?也显示代码 – ddb

+2

使用if(temperatureUnit.equalsIgnoreCase(“C”)){...} –

+0

== ==运算符检查对象的引用是否相等。阅读[this](http://stackoverflow.com/questions/767372/java-string-equals-versus)以获得更好的理解。 – Bee

回答

0

试试这个..

公共静态字符串getCommonTemperature(INT摄氏度){ INT RET;

if (temperatureUnit.equalsIgnoreCase("C")) { 
    ret = celsius; 
} 
else { 
    ret = (9/5) * celsius + 32; 
} 

return Integer.toString(ret); 

}

+0

谢谢Silam,'''eqaulsIgnoreCase'''或''''''''适合我的情况。 – Harry