我想通过多语言支持进行应用设置。每种语言的设置项的值都不同。我有字符串数组:
<string-array name="syncTemperature">
<item>@string/celcius</item>
<item>@string/fehrenheit</item>
</string-array>
用于:
<ListPreference
android:key="prefTempUnit"
android:entries="@array/syncTemperature"
android:summary="@string/pref_temp_current"
android:entryValues="@array/syncTemperature"
android:title="@string/pref_temperature" />
当我打电话时:
String celcius = sharedPrefs.getString("prefTempUnit", "Celcius")
每次我都会得到不同的价值。 我的问题是如何在一个项目下为所有字符串设置一个值。 例如,当我想检查用户选择的内容并在之后进行一些操作时。
像这样:
if(prefTemUnit==celcius){
setTempUnitToCelc();
}
修改
现在我想出了一个选项:
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
String unit=sharedPrefs.getString("prefTempUnit", "Celcius");
String[] stringArray = getResources().getStringArray(R.array.syncTemperature);
if(unit.equals(stringArray[0])){
//mymethod
}
但我不知道它是否合适。
答案 0 :(得分:0)
好的,我得到了你的解决方案:
首先:
String celcius = sharedPrefs.getString("prefTempUnit", "Celcius")
会将“Celcius”作为默认值返回。也许你应该删除它?
第二: 如果要根据实际语言访问String值,则应使用:
String retrievedValueFromStringXML = getResources().getString(R.string.celcius);
添加:
ListPreference
有一个名为getValue()
的方法,您也应该使用它来检索实际值。