Android - 读取arrays.xml

时间:2012-02-28 16:08:58

标签: android

我有一组存储在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。”的数组。

它不包含命名值。

您是否知道如何获取每个名称以及项目?

2 个答案:

答案 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)

好吧,我不知道你是否可以直接这样做,但你总是可以创建一个包装器类来加载两个字符串数组,并为任何给定的数组值提供两个值。