私はここで奇妙な状況に直面しています。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);
}
事がtemperatureUnitは、「C」が含まれていながら、それはそれのelse
一部に秋を保持します。..です。
誰がどんな考えを持っていますか? ありがとうございます。
あなたは、たとえばFにその優先順位を設定していますか?どうやって?どこ? – ddb
if(temperatureUnit.equalsIgnoreCase( "C")){....} –
'=='演算子は、オブジェクトへの参照が等しいかどうかをチェックします。理解を深めるために[this](http://stackoverflow.com/questions/767372/java-string-equals-versus)を読んでください。 – Bee