多语言设置和获取字符串数组项 - android

时间:2013-08-06 18:28:30

标签: android arrays string settings preferences

我想通过多语言支持进行应用设置。每种语言的设置项的值都不同。我有字符串数组:

<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
    }

但我不知道它是否合适。

1 个答案:

答案 0 :(得分:0)

好的,我得到了你的解决方案:

首先: String celcius = sharedPrefs.getString("prefTempUnit", "Celcius")会将“Celcius”作为默认值返回。也许你应该删除它?

第二: 如果要根据实际语言访问String值,则应使用:

String retrievedValueFromStringXML = getResources().getString(R.string.celcius);

添加: ListPreference有一个名为getValue()的方法,您也应该使用它来检索实际值。

相关问题