0

我想让我的应用设置支持多语言。设置项目的值在每种语言中会有所不同。我有字符串数组:

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

但我不知道它是否合适。

4

1 回答 1

0

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

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

第二:如果您想根据实际语言访问String值,您应该使用:

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

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

于 2013-08-06T18:47:04.887 回答