1

次のことを達成する方法がわかりません。

で選択したものに対応する「人間が読める形式」( refresh_interval_entries) を、たとえば で表示したいと思います。Log.d()refresh_interval_values

  • で定義された 2 つの配列がありますvalues\arrays.xml

    <string-array name="refresh_interval_entries" translatable="false">
        <item>1 minute</item>
        <item>2 minutes</item>
        <item>3 minutes</item>
    </string-array>
    <string-array name="refresh_interval_values" translatable="false">
       <item>60</item>
       <item>120</item>
       <item>180</item>
    </string-array>
    
  • 選択した値をrefresh_interval_valuesListPreference に保存します。

最初は次のようなことを考えていました。

String[] mEntries = getResources().getStringArray(R.array.refresh_interval_entries);

mEntries[index]しかし、 の値を使用できないため、 の正しいインデックスを取得できないため、うまくいかないと思いますrefresh_interval_values

これを拡張するアクティビティで表示しようとしているのではなくPreferenceActivity、通常のアクティビティで表示しようとしています。これを行う方法はありますか?

4

2 に答える 2

2

アプリケーションの開始時に、次HashMapの 2 つを作成しますarrays

HashMap<String, String> dictionary = new HashMap<String, String>(); 
String[] mEntries = getResources().getStringArray(R.array.refresh_interval_entries);
String[] mValues = getResources().getStringArray(R.array.refresh_interval_values);

for (int i = 0; i < mEntries.length; i++) {
    dictionary.put(mValues[i], mEntries[i]);
}

次のように使用します。

String entry = dictionary.get("60");
于 2013-02-25T18:44:34.523 に答える
1

このようなことをします:

   {
        ... 
        String[] mEntries = getResources().getStringArray(R.array.refresh_interval_entries);
        String[] mValues = getResources().getStringArray(R.array.refresh_interval_values);
        Log.d(TAG, "120=" + getEntryFromValue("120", mEntries, mValues));
    }

private String getEntryFromValue(String value, String[] mEntries, String[] mValues) {
    for (int i=0; i < mValues.length; i++) {
        if (value.equals(mValues[i])) {
            // check mEntries length
            return mEntries[i];
        }
    }
    return "NOT FOUND";
}
于 2013-02-25T18:25:27.720 に答える