如何在集合中添加选定的MultiSelectListPreference值?

时间:2018-10-25 06:46:37

标签: android set sharedpreferences android-preferences

因此,我必须将MultiSelectListPreference中的选定值设置为Set变量,以使用putStringSet()方法将tUserSharedPrefhese值存储在UserSharedPref对象中。

MultiSelectListPreference的XML部分:

<MultiSelectListPreference
    android:title="Objects to detect"
    android:summary="person,bicycle,motorcycle,car,bus,truck"
    android:defaultValue="@array/values"
    android:key="objects_to_detect"
    android:entries="@array/objects"
    android:entryValues="@array/values"
    />

我的代码部分:

objects = (MultiSelectListPreference) findPreference("objects_to_detect");

    objects.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {



            Set<String> myHashSet = new HashSet(10);  
            StringTokenizer st = new StringTokenizer(newValue.toString(), ",");
            while(st.hasMoreTokens())
            {   Log.d("TEST:",st.nextToken()); }

            while(st.hasMoreTokens())
            {   myHashSet.add(st.nextToken()); }

            editor_objects.putStringSet(UserSharedPref.objectList,myHashSet);
            editor_objects.commit();
            myHashSet.clear();
            return false;
        }
    });

问题是: 如果我仅使用newValue,则会将[“”,“”,“”]作为字符串不知道如何正确解析。

如果我将StringTokenizer()与Hashmap一起使用,则会在[[“ selection1”],[“ selection2”],“ selection3”]中获得选择的选项,这是最糟糕的格式。我必须保存使用putStringSet()在SharedPreference对象中进行选择。

请告诉我如何解决。

0 个答案:

没有答案