因此,我必须将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对象中进行选择。
请告诉我如何解决。