Android Multiselectlistpreference检索值

Android Multiselectlistpreference检索值,android,eclipse,sharedpreferences,multi-select,Android,Eclipse,Sharedpreferences,Multi Select,我试图检索这些值,但不知何故,我得到了更多的值回来。 这是我正在运行的代码。有人知道我做错了什么吗?我确实在很多地方搜索过,但大多数都过时了。(我勾选了第2项和第3项) 只是为了确保我只想读出列表中选中的复选框,但我不知道0-1-2-123来自哪里 pref_app.xml <MultiSelectListPreference android:title="Categories" android:key="rssfeeds" andr

我试图检索这些值,但不知何故,我得到了更多的值回来。 这是我正在运行的代码。有人知道我做错了什么吗?我确实在很多地方搜索过,但大多数都过时了。(我勾选了第2项和第3项) 只是为了确保我只想读出列表中选中的复选框,但我不知道0-1-2-123来自哪里

pref_app.xml

    <MultiSelectListPreference
        android:title="Categories"
        android:key="rssfeeds"
        android:summary="List to choose from"
        android:entries="@array/catos"
        android:entryValues="@array/catovalues"
        android:defaultValue="@array/catodefault"
        android:dialogTitle="Categories"
        >
    </MultiSelectListPreference>
<string-array name="catos">
    <item >Movies</item>
    <item >Test</item>
    <item >TEst23</item>
</string-array>
<string-array name="catovalues">
    <item >movies-checked</item>
    <item >test-checked</item>
    <item >test23-checked</item>
</string-array>
    <string-array name="catodefault">
    <item >movies-default</item>
    <item >test-default</item>
    <item >TEST23-default</item>
</string-array>
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        Set<String> selections = preferences.getStringSet("rssfeeds", null);
        String[] selected= selections.toArray(new String[] {});
        for (int i = 0; i < selected.length ; i++){
            System.out.println("\ntest" + i +" : " + selected[i]);
        }

请尝试以下代码:

for(String s: selections){
    if("movies-checked".equals(s)) {
    }
    if("test-checked".equals(s)) {
    }
    if("test23-checked".equals(s)) {
    }
} 

它只存储已检查的内容

你可以把价值观​​作为指数

<string-array name="catos">
    <item >Movies</item>
    <item >Test</item>
    <item >TEst23</item>
</string-array>
<string-array name="catovalues">
    <item >0</item>
    <item >1</item>
    <item >2</item>
</string-array>

0 - Movies => Checked 
1 - Test   => Unchecked 
2 - TEst23 => Checked 

影视
试验
测试23
0
1.
2.
0-电影=>已检查
1-测试=>未选中
2-TEst23=>已检查
在首选项中,文件将仅索引0和2,您可以假定其他索引未标记


因此,如果您分析
集合
,其大小将仅为2个
字符串
,分别为0和2。

请在代码中搜索您将此信息放在集合中的位置。顺便说一句,你可以简单地
inti=0;对于(Sting s:selections){System.out.println(“\ntest”+i+++:“+s);}
(我会删除i)@Veldmuus,您确定代码正在工作吗?我遇到了以下错误:
原因:java.lang.ClassCastException:java.lang.String无法转换为java.util.Set
谢谢,@cicero moura。以及如何找到要检查的确切项目?
<string-array name="catos">
    <item >Movies</item>
    <item >Test</item>
    <item >TEst23</item>
</string-array>
<string-array name="catovalues">
    <item >0</item>
    <item >1</item>
    <item >2</item>
</string-array>

0 - Movies => Checked 
1 - Test   => Unchecked 
2 - TEst23 => Checked