Получить все выбранные записи из MultiSelectListPreference(SharedPreferences)

Я хочу использовать MultiSelectListPreference для создания массива элементов и поиска их в xml.

Я создал MultiSelectListPreference в XML (res / xml / preferences.в XML)

<MultiSelectListPreference
            android:dialogTitle="@string/coursesTitle"
            android:key="searchedCourses"
            android:summary=""        
            android:title="@string/coursesTitle"
            android:entries="@array/courses"
            android:entryValues="@array/courses"
            android:defaultValue="@array/empty_array"
            android:dependency="own_courses"
           />

Я создал фрагмент предпочтения и действие предпочтения. Я уже могу выбрать предметы, которые хочу найти.

теперь я хочу прочитать выбранные элементы.

Я пробовал с

SharedPreferences sharedPref =   PreferenceManager.getDefaultSharedPreferences(this);
 String rawval = sharedPref.getString("searchedCourses", "NA");
 String[] selected = this(context, null).parseStoredValue(rawval);

 Toast.makeText(context, selected[0], Toast.LENGTH_LONG).show();

и аналогичные "решения", которые я нашел онлайн, но это не работает.

2 ответов


хотя я не очень хорошо знаком с ними, я ожидал бы, что это сработает:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
Set<String> selections = sharedPrefs.getStringSet("searchedCourses", null);

Toast.makeText(context, selections.get(0), Toast.LENGTH_LONG).show();

какое поведение вы видите?


спасибо:) метод getStringSet () был решением. Я немного изменил код, хотя:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
Set<String> selections = sharedPrefs.getStringSet("searchedCourses", null);
String[] selected = selections.toArray(new String[] {});
Toast.makeText(context, selected[all], Toast.LENGTH_LONG).show();

Я очень благодарна.

PS: ваше решение приводит к ошибке: метод get () не определен для набора типов. Не знаю, почему.