我想使用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;我在网上找到了,但它不起作用。
答案 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。 不知道为什么。