我在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 key namesList时,Firstname会给我6。
我所要做的就是阅读array.xml,这样我就可以将数字6与凯文联系起来。我可以使用getResources().getStringArray(R.array.testArray);,但这只返回一个包含“鲍勃、凯文、彼得、保罗、西蒙、马特”的数组。
它不包括命名值。
你知道我怎样才能得到每一个的名字和物品吗?
发布于 2012-02-29 00:16:09
当您在settings.xml中定义您的首选项时,您可以访问arrays.xml,如下所示(输入错误的应用程序)
<ListPreference
android:title="FirstNameValues"
android:summary="First Names"
android:key="fistNamePreference"
android:defaultValue="1"
android:entries="@array/firstName"
android:entryValues="@array/fistNameValues" />在您的activity onCreate中添加
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" />onCreate调用中的settingsAcitivty
addPreferencesFromResource(R.xml.settings);要在其中使用首选项的OtherAcitivity
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this.getBaseContext());
timerPeriod = Integer.parseInt(prefs.getString("retryPeriodPref", "5000"));发布于 2012-02-29 00:18:15
我不知道您是否可以直接这样做,但是您总是可以创建一个包装器类,它加载字符串数组,并为任何给定的数组值提供两个值。
https://stackoverflow.com/questions/9485459
复制相似问题