我有一组存储在arrays.xml中的首选项,它们看起来类似于:
<string-array name="firstname">
<item name="1">Bob</item>
<item name="6">Kevin</item>
<item name="3">Peter</item>
<item name="4">Paul</item>
<item name="5">Simon</item>
<item name="2">Matt</item>
</string-array>
<string-array name="FirstnameValues">
<item name="1">1</item>
<item name="2">2</item>
<item name="3">3</item>
<item name="4">4</item>
<item name="5">5</item>
<item name="6">6</item>
</string-array>
这些用于填充ListPreference。存储在SharedPreferences中的项目是项目的名称;例如,对于Kevin,存储在SharedPreferences中的项目将为6。
prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String Firstname = prefs.getString("namesList", "");
所以在这里,当为所选项目Kevin选择SharedPreference键名称列表时,Firstname
会给我6个。
我想要做的就是阅读array.xml,所以我可以将数字6与Kevin联系起来。我可以使用getResources().getStringArray(R.array.testArray);
,但这只会返回一个包含“Bob,Kevin,Peter,Paul,Simon,Matt。”的数组。
它不包含命名值。
您是否知道如何获取每个名称以及项目?
答案 0 :(得分:0)
在settings.xml中定义首选项时,可以按如下方式访问arrays.xml(错别字的applogies)
<ListPreference
android:title="FirstNameValues"
android:summary="First Names"
android:key="fistNamePreference"
android:defaultValue="1"
android:entries="@array/firstName"
android:entryValues="@array/fistNameValues" />
在您的活动onCreate add
addPreferencesFromResource(R.xml.settings);
如果您需要更多说明,请告诉我。这是一个例子。 Arrays.xml
<string-array name="timeIntervalList">
<item>5 seconds</item>
<item>10 seconds</item>
<item>30 seconds</item>
<item>1 minute</item>
<item>5 minutes</item>
<item>10 minutes</item>
</string-array>
<string-array name="timeIntevalValues">
<item>5000</item>
<item>10000</item>
<item>30000</item>
<item>60000</item>
<item>300000</item>
<item>600000</item>
</string-array>
的settings.xml
<ListPreference
android:title="Retry Interval"
android:summary="Time interval"
android:key="retryPeriodPref"
android:defaultValue="5000"
android:entries="@array/timeIntervalList"
android:entryValues="@array/timeIntevalValues" />
settingsAcitivty 在onCreate调用
addPreferencesFromResource(R.xml.settings);
您希望使用偏好的其他活动
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this.getBaseContext());
timerPeriod = Integer.parseInt(prefs.getString("retryPeriodPref", "5000"));
答案 1 :(得分:0)
好吧,我不知道你是否可以直接这样做,但你总是可以创建一个包装器类来加载两个字符串数组,并为任何给定的数组值提供两个值。