我弹出一个设置菜单,其中是一个ListPreference类型菜单。它与settings.xml文件相关联,其中包含“array-strings”。这一切都很好,但我不知道如何检索用户偏好。
例如,假设用户选择一种颜色(红色,绿色或蓝色)。我在'array-strings'中创建的列表包含红色,绿色和蓝色文本。在我的代码中,我想做一些事情,如果用户选择了红色,其他东西,如果他们选择蓝色等,等等。我会使用“案例”陈述或“如果”陈述?最重要的是,我如何检索用户偏好 - 关键? (我在检查布尔值吗?)
答案 0 :(得分:5)
如果您正在使用ListPreference并且尚未禁用持久状态,则可在设置完成后从SharedPreferences中读取所选值。
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.getString(yourkey, "defvalue");
您也可以订阅onClick
事件,并使用上面提到的代码Rpond。
答案 1 :(得分:2)
如果您的列表显示在Dialog中,那么您需要指定一个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}}};