6

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

我在 XML (res/xml/preferences.xml) 中创建了 MultiSelectListPreference

<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();

以及我在网上找到的类似“解决方案”,但它不起作用。

4

2 回答 2

8

虽然对它们不是很熟悉,但我希望这会起作用:

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

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

你看到了什么行为?

于 2013-11-05T23:52:26.790 回答
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:您的解决方案导致错误:对于 Set 类型,方法 get() 未定义。不知道为什么。

于 2013-11-06T16:00:20.407 回答