从MultiSelectListPreference(SharedPreferences)获取所有选定的条目

时间:2013-11-05 21:58:19

标签: android xml sharedpreferences multiselectlistpreference

我想使用MultiSelectListPreference创建一个项目数组并在xml中搜索它们。

我在XML中创建了MultiSelectListPreference(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();

和类似的解决方案&#39;我在网上找到了,但它不起作用。

2 个答案:

答案 0 :(得分:9)

虽然对它们不是很熟悉,但我希望这可行:

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

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

你看到了什么行为?

答案 1 :(得分:4)

谢谢:) 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()未定义类型Set。 不知道为什么。