当前位置: 首页 > news >正文

使用Preference保存设置

http://blog.csdn.net/barryhappy/article/details/7381544

 

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.   
  4.     <CheckBoxPreference  
  5.         android:defaultValue="false"  
  6.         android:key="boolean_value"  
  7.         android:summary="保存一个boolean值"  
  8.         android:title="Checkbox" />  
  9.   
  10.     <EditTextPreference  
  11.         android:defaultValue="defaultString"  
  12.         android:key="string_value"  
  13.         android:name="EditText"  
  14.         android:summary="保存一个字符串"  
  15.         android:title="Edit Text" />  
  16.   
  17. </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.   
  5. public class SettingActivity extends PreferenceActivity{  
  6.     @Override  
  7.     public void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         addPreferencesFromResource(R.xml.setting);  
  10.     }  
  11. }  

代码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失败时的默认返回值。


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

我写的一个demo,下载地址:http://download.csdn.net/detail/barryhappy/4161548

转载于:https://www.cnblogs.com/misybing/p/5026305.html

相关文章:

  • Android小项目蓝牙电子钟
  • 百度地图使用案例代码
  • Handler的基本使用
  • Andriod Studio Clear Project或Rebuild Project出错
  • Activity的生命周期
  • javascript实现URL不缓存的方法
  • Android Studio VS Eclipse (还在用Eclipse?你OUT了!)
  • Android之TextView灵活使用
  • Android Studio安装后Fetching android sdk component information超时的解决方案
  • Git配置出现的问题
  • Android-studio+Genymotion模拟器的联合使用
  • 工作中遇到的一个多线程下导致RCW无法释放的问题
  • Android实例-拨打电话
  • 博弈SG函数
  • Android实例-发送信息
  • Fundebug计费标准解释:事件数是如何定义的?
  • JAVA之继承和多态
  • Linux后台研发超实用命令总结
  • maven工程打包jar以及java jar命令的classpath使用
  • OSS Web直传 (文件图片)
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • React-Native - 收藏集 - 掘金
  • Spark学习笔记之相关记录
  • Sublime text 3 3103 注册码
  • Terraform入门 - 1. 安装Terraform
  • Vim Clutch | 面向脚踏板编程……
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 检测对象或数组
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 聊聊sentinel的DegradeSlot
  • 什么软件可以剪辑音乐?
  • 算法-图和图算法
  • 微服务核心架构梳理
  • 小程序01:wepy框架整合iview webapp UI
  • 赢得Docker挑战最佳实践
  • ​​​​​​​​​​​​​​Γ函数
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #git 撤消对文件的更改
  • $.ajax()参数及用法
  • (13):Silverlight 2 数据与通信之WebRequest
  • (42)STM32——LCD显示屏实验笔记
  • (9)目标检测_SSD的原理
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (MATLAB)第五章-矩阵运算
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)基于IDEA的JAVA基础1
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 的程序集加载上下文
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)