Итак, я должен установить выбранные значения из MultiSelectListPreference в переменную Set для хранения значений tUserSharedPrefhese в объекте UserSharedPref с помощью метода putStringSet ().
Моя XML-часть MultiSelectListPreference:
<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"], это самый худший из форматов. У меня естьсохранить выборки в объекте SharedPreference с помощью putStringSet ().
Скажите, пожалуйста, как решить эту проблему.