3

我有一个弹出的设置菜单,其中有一个 ListPreference 类型的菜单。它与一个 settings.xml 文件相关联,其中包含“array-strings”。这一切都很好,但我不知道如何检索用户的偏好。

例如,假设用户选择了一种颜色(红色、绿色或蓝色)。我在“数组字符串”中创建的列表包含红色、绿色和蓝色文本。在我的代码中,如果用户选择了红色,我想做一些事情,如果他们选择蓝色等等,我想做一些事情。我会使用“case”语句还是“if”语句?最重要的是,我将如何检索用户偏好 - 密钥?(我在检查布尔值吗?)

4

2 回答 2

5

如果您正在使用 ListPreference 并且您没有禁用 Persistent 状态,您可以在设置完成后从 SharedPreferences 中读取选定的值。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.getString(yourkey, "defvalue");

您也可以订阅onClick事件,并使用提到的代码 Rpond。

于 2010-03-23T15:38:33.167 回答
2

如果您的列表显示在对话框中,那么您需要指定一个 OnClickListener,它将调用 onClick 方法。检查下面的示例。在示例中,传递给 onClick 的索引是数组中项目的索引。

new AlertDialog.Builder(this).setTitle("Settings").setItems(R.array.colors, new DialogInterface.onClickListener() { void onClick(DialogInterface d, int index) {
switch(index) {
CASE 0: // do something
CASE 1: // do something else}}}; 
于 2010-03-23T14:41:42.920 回答