SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,
1、Context.getSharedPreferences(String name,int mode)来得到一个指定name的SharedPreferences实例
2、PreferenceManager.getDefaultSharedPreferences(Context)来获取在同一个包名下的SharedPreferences实例
name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。一般这个文件存储在/data/data/<package name>/shared_prefs下(这个面试常问到)
context:为上下文对象
mode:是指定读写方式,其值有三种,分别为:
Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写
Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写
Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。
首先介绍一下它的 常用方法:
public abstract boolean contains (String key) ----- 判断SharedPreferences是否包含特定key的数据
public abstract SharedPreferences.Editor edit () ----- 返回一个Edit对象用于操作SharedPreferences
public
abstract Map<String, ?> getAll () ------ 获取SharedPreferences数据里全部的key-value对象
getXXX(String
key,XXX defvlaue) ------ 获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是boolean、float、int、long、String等基本类型的值
Editor接口的常用方法:
public
abstract SharedPreferences.Editor clear () ---- 清空SharedPreferences里所有的数据
public
abstract boolean commit () ----- 当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改
public
abstract SharedPreferences.Editor putXXX (String key, boolean XXX) ---- 向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值
public
abstract SharedPreferences.Editor remove (String key) ----- 删除SharedPreferences里指定key对应的数据项
写入数据到XML里
Editor sharedata = getSharedPreferences("config", MODE_PRIVATE).edit(); sharedata.putString("item","hello getSharedPreferences"); sharedata.commit();
读取XML里数据
SharedPreferences sharedata = getSharedPreferences("config", 0); String data = sharedata.getString("item", null);
注:config为xml文件名
最后我们想获取 preference.xml里偏好配置的值,只需要根据里面key就可以获取到
SharedPreferences sharedata = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); String list_entries = sharedata.getString("list_entries", ""); String edittext_preference = sharedata.getString("edittext_preference", ""); boolean child_checkbox_preference = sharedata.getBoolean("child_checkbox_preference", false); boolean parent_checkbox_preference = sharedata.getBoolean("parent_checkbox_preference", false); boolean checkbox = sharedata.getBoolean("checkbox", false); boolean next_screen_checkbox_preference = sharedata.getBoolean("next_screen_checkbox_preference", false);