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")

毎回異なる値を取得します。私の質問は、1 つの項目の下にあるすべての文字列に対して 1 つの値を持つ方法です。たとえば、ユーザーが何を選択したかを確認し、その後何らかのアクションを実行したい場合などです。

このような:

if(prefTemUnit==celcius){
    setTempUnitToCelc();
}

編集:

今のところ、1つのオプションを考え出しました:

    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")、デフォルト値として「Celcius」を返します。たぶん、あなたはそれを削除する必要がありますか?

2番目:実際の言語に従って文字列値にアクセスする場合は、次を使用する必要があります。

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

追加するには: ListPreferenceというメソッドがありgetValue()、実際の値を取得するためにもそれを使用する必要があります。

于 2013-08-06T18:47:04.887 に答える