Android SharedPreferences

本文详细介绍了Android中SharedPreferences的使用方法,包括如何保存和读取键值对数据,并提供了示例代码。
SharedPreferences在Android中常用来保存一些软件的配置信息,如:用户名、密码、默认欢迎语等,就像在Windows常用ini文件进行保存,在J2se中用properties属性文件进行保存,用SharedPreferences进行保存信息存在了一个XML文件中,它是一个轻量级的存储类,其以键值对的方式存储,使得我们可以很方便的读取和存入,一般SharePerferences保存的存储文件都存放在/data/data/<package name>/shares_prefs文件夹下。

如果要把数据保存到ShreadPreferences中,首先要通过上下文对象取得里面的getSharedPreferences(name, mode),name代表:文件(xml)的名称,不用指定文件名的后缀,系统自动加上,mode代表存储模式,常用的为private。

使用SharedPreferences保存key-value对的步骤如下:

  (1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。

  (2)使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。

  (3)通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。

  (4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。

示例代码:

//打开Preferences,名称为arr,如果存在则打开它,否则创建新的Preferences

SharedPreferencesarr= getSharedPreferences("example", 0);
Editor editor = arr.edit();//获取编辑器
editor.putString("name", "张三");
editor.putInt("age", 23);
editor.commit();//提交修改
生成的example.xml文件内容如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="name">张三</string>
<int name="age" value="23" />
</map>
使用SharedPreferences取出key-value:

(1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,需要创建该应用的Context,然后通过Context 访问。

如:SharedPreferences preferences = getContext().getSharedPreferences("example", Context.MODE_PRIVATE);

(2)取出相应数据。如:String name = arr.getString("name","");

示例:

SharedPreferences preferences = getSharedPreferences("arr", Context.MODE_PRIVATE);

String name = preferences.getString("name", "");//第二个参数为默认值,如果key(第一个参数)值不存在,就返回第二个参数指定的值

int age = preferences.getInt("age", 20);

注意:创建文件的项目为a,要在项目b中访问a中的文件。

在b直接这样写的话,访问的是b自己项目底下的文件,访问不到a项目创建的文件。

如果要访问到a项目创建的文件必须在b中构造a应用的上下文对象出来所以应该这样写:

Context otherContext = getContext().createPackageContext(“a所在的包名”, Context.CONTEXT_IGNORE_SECURITY);//第一个参数为a应用所在的包名,第二个参数,因为//要访问其他文件,所以设定为忽略掉安全检测,Context.CONTEXT_IGNORE_SECURITY

SharedPreferences preferences = otherContext.getSharedPreferences("it", Context.MODE_PRIVATE););

//取得内容

String name = preferences.getString("name", "");

int age = preferences.getInt("age", 20);

另外,通过getPreferences(mode);也可以得到SharedPreferences对象!


private static Boolean LIGHTTHEME= PreferenceManager.getDefaultSharedPreferences(context).getBoolean(Strings.SETTINGS_LIGHTTHEME, false);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值