Android中有四种持久化数据的方法:SQLite数据库、文件存储、Preference、ContentProvider。

四种方法各有专攻,而其中Preference是以类似Map的键值对形式存储的,最适合用来保存用户个人设置之类的信息。

可以用一个xml文件来配置一个设置界面,然后用专门的PreferenceActivity将其显示。PreferenceActivity是专业的设置界面,只要给它指定一个配置好的xml,它就能自动根据操作更改程序Preference的相应值。

比如在res目录下建立一个xml文件夹,然后新建一个seeting.xml文件,内容如下:

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <CheckBoxPreference
  4. android:defaultValue="false"
  5. android:key="boolean_value"
  6. android:summary="保存一个boolean值"
  7. android:title="Checkbox" />
  8. <EditTextPreference
  9. android:defaultValue="defaultString"
  10. android:key="string_value"
  11. android:name="EditText"
  12. android:summary="保存一个字符串"
  13. android:title="Edit Text" />
  14. </PreferenceScreen>

checkBoxPreference对应一个boolean值,EditTextPreference对应一个String。  android:key是标识符,必须是 唯一的。

然后建立一个SettingActivity.java,内容如下:

[java] view plaincopyprint?
  1. import android.com.ui.R;
  2. import android.os.Bundle;
  3. import android.preference.PreferenceActivity;
  4. public class SettingActivity extends PreferenceActivity{
  5. @Override
  6. public void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. addPreferencesFromResource(R.xml.setting);
  9. }
  10. }

代码addPreferencesFromResource(R.xml.setting);即给这个PreferenceActivity指定了一个xml,这样,当打开此界面时的效果图:

每次更改界面的设置之后,程序会自动持久化保存新的值。

而在程序的其他地方获取到设置的值也很简单,只需通过标识符,如获取上文中标识符为“boolean_value”和“string_value”的值, 只需

[java] view plaincopyprint?
  1. boolean booleanValue = PreferenceManager.getDefaultSharedPreferences(
  2. this).getBoolean("boolean_value", false);
  3. String stringValue = PreferenceManager.getDefaultSharedPreferences(this)
  4. .getString("string_value", "");

即可获得。

PreferenceManager.getDefaultSharedPreferences(Context)是一个静态方法,获取到一个全局的Preference对象,在程序中的任何地方都是唯一的,getBoolean和getString方法的第二个参数是默认值,是在获取key失败时的默认返回值。

----------------------------------------------------------

使用Preference保存设置相关推荐

  1. Android Preference 的使用

    设置(Settings) 应用程序通常包括允许用户修改应用程序的特性和行为的设置功能.例如,一些应用程序允许用户指定通知是否启用或指定多久使用云同步数据.如果你想要 为你的应用程序提供设置,你应该使用 ...

  2. Android Preference详解

    转载请标明出处:ttp://blog.csdn.net/sk719887916/article/details/42437253 Preference 用来管理应用程序的偏好设置和保证使用这些的每个应 ...

  3. Android中Preference,preferenceActivity,PreferenceFragment等的使用

    本文转自android 官方翻译过来的文本: 这里的话,只谈几个需要注意的问题: (1)这篇文章中也谈到的: 您必须将 XML 文件保存在 res/xml/ 目录中.尽管您可以随意命名该文件,但它通常 ...

  4. xyplorer保存设置失败_XYplorer设置中文步骤详解教程

    XYplorer怎么设置中文?XYplorer中文设置教程怎么做?XYplorer是一个简单实用的Windows文件管理工具.XYplorer接受强大的文件搜索.通用预览和高度可定制的界面等功能,以及 ...

  5. Android中Preference的使用以及监听事件分析

                                                                                                        ...

  6. 项目执行maven update时,报:Preference node org.eclipse.wst.validation

    参考:http://blog.csdn.net/u013474104/article/details/43866747 详细情况如下: An internal error occurred durin ...

  7. 实际用户ID,有效用户ID与保存设置用户ID

    real user ID:实际用户ID,指的是进程执行者是谁 effective user ID:有效用户ID,指进程执行时对文件的访问权限 saved set-user-ID:保存设置用户ID,作为 ...

  8. java trackid_Java Preference.getContext方法代码示例

    import android.preference.Preference; //导入方法依赖的package包/类 @Override public boolean onPreferenceChang ...

  9. Personal preference

    Personal preference 相关文章 Algorithm:Algorithm的进阶之路 目录 程序猿成长之路 Personal 历史问题记录 程序猿成长之路 Personal 1.C:\U ...

最新文章

  1. 表贴3.3V稳压芯片 PL3500测试 低压差线性稳压器
  2. js 控制展开折叠 div html dom
  3. python 3.5-python3.5
  4. Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作
  5. 用python自动发邮件_Python实现向QQ群成员自动发邮件的方法
  6. 栈-线性表(代码、分析、汇编)
  7. SDWebImage常用方法及原理
  8. Thinking in Java读书笔记
  9. 7.物理地址(MAC地址)是什么?
  10. Unity问题(1)——mesh法线反转
  11. c语言的三个基本语句,C语言-桂林理工大学3-第三章 C程序设计的基本语句.doc
  12. 魔兽世界服务器的研究
  13. 防火墙与入侵检测系统
  14. 风速传感器的安装要求是什么?安装要注意这三点
  15. Kali Linux 简介
  16. python opencv图像阈值处理
  17. JSON.parse()方法
  18. 推荐系统-排序层:主流CTR模型综述【Click-Through-Rate,点击率预估,指精排层的排序】【CTR 模型的输入(即训练数据)是:大量成对的 (features, label)数据】
  19. oracle adg 人工干预,ORACLE 12C ADG 之十四 (ADG PDB级闪回(Flashback PDB))
  20. 移动手机卡支持NFC支付 小米2A刷地铁体验

热门文章

  1. 用css样式画三角形(提示框三角形)
  2. 【常见笔试面试算法题12续集六】动态规划算法案例分析6 最优编辑练习题
  3. 51单片机学习笔记之定时器程序设计
  4. VMware12.0下安装CentOS-6.9-x86_64-bin-DVD.iso
  5. erlang OTP中的四大behaviour fsm的例子
  6. ★★★常用的【兼容IE和火狐FF】等浏览器的js方法★★★★★★★★
  7. sqlserver检索函数、存储过程、视图 中的关键字
  8. Ubuntu开机自动启动script(2)
  9. 847. Shortest Path Visiting All Nodes(三)
  10. pat-1136. A Delayed Palindrome (20) 模拟