android.content.SharedPreferences是一个接口,用来获取和修改持久化存储的数据。有三种获取系统中保存的持久化数据的方式:
1). public SharedPreferences getPreferences (int mode)
通过Activity对象获取,获取的是本Activity私有的Preference,保存在系统中的xml形式的文件的名称为这个Activity的名字,因此一个Activity只能有一个,属于这个Activity。
2). public SharedPreferences getSharedPreferences (String name, int mode)
因为Activity继承了ContextWrapper,因此也是通过Activity对象获取,但是属于整个应用程序,可以有多个,以第一参数的name为文件名保存在系统中。
3). public static SharedPreferences getDefaultSharedPreferences (Context context)
PreferenceManager的静态函数,保存PreferenceActivity中的设置,属于整个应用程序,但是只有一个,Android会根据包名和PreferenceActivity的布局文件来起一个名字保存。
通过以上方式取得SharedPreferences后就可以对数据进行读取或者保存了。
如下是一个SharedPreferences的简单操作
package org.xml.demo.viewpager; import ogg.huanxin.huadong.R; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; /* * 使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下: */ public class Login extends Activity { /** 定义登录姓名的编辑框 */ private EditText ed_Name; /** 定义输入密码的编辑框 */ private EditText ed_PassWord; /** 定义登录的按钮 当点击时跳转到其他的界面 */ private Button loginButton; /** 定义个选择框点击时会记住密码 */ private CheckBox cb_dian; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); super.setContentView(R.layout.login); ed_Name = (EditText) super.findViewById(R.id.ed_login_name); ed_PassWord = (EditText) super.findViewById(R.id.ed_login_password); loginButton = (Button) super.findViewById(R.id.bb_login_login); cb_dian = (CheckBox) super.findViewById(R.id.cb_login_dian); loginButton.setOnClickListener(new MyOnClickItem()); /** 定义个方法当下次进来的时候会读取getSharedPreferences若有则将姓名和密码返回到界面上 */ readLogin(); } private class MyOnClickItem implements View.OnClickListener { @Override public void onClick(View arg0) { // TODO Auto-generated method stub if (cb_dian.isChecked()) { BaoCuenLogin(); Toast.makeText(Login.this, "登陆成功", Toast.LENGTH_SHORT).show(); } Intent it = new Intent(Login.this, DialogText.class); startActivity(it); } } /** 定义个方法当下次进来的时候会读取getSharedPreferences若有则将姓名和密码返回到界面上 */ private void readLogin() { SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE); this.ed_Name.setText(sp.getString("name", "")); this.ed_PassWord.setText(sp.getString("password", "")); } /** 实现文件的保存 */ private void BaoCuenLogin() { String name = ed_Name.getText().toString(); String passWord = ed_PassWord.getText().toString(); SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE); SharedPreferences.Editor ed = sp.edit(); ed.putString("name", name); ed.putString("password", passWord); ed.commit();// 提交 } }
下面是对SharedPreferences的封装
package com.item.test.util; import android.content.Context; import android.content.SharedPreferences; import android.util.Log; /** * 这个是SharedPreferences的封装 * Created by Administrator on */ public class SPManager { private static SPManager spManager = null; private static SharedPreferences sp = null; private static SharedPreferences.Editor editor = null; private static final String SHARE_NAME = "info";//Preference文件名 private SPManager(Context context) { sp = context.getSharedPreferences(SHARE_NAME, Context.MODE_PRIVATE); editor = sp.edit(); } public static SPManager getInstance(Context context) { if (spManager == null || sp == null || editor == null) { spManager = new SPManager(context); } return spManager; } public void putInt(String key, int value) { editor.putInt(key, value); editor.commit(); } public int getInt(String key, int defaultValue) { return sp.getInt(key, defaultValue); } public void putLong(String key, Long value) { editor.putLong(key, value); editor.commit(); } public long getLong(String key, int defaultValue) { return sp.getLong(key, defaultValue); } public void putString(String key, String value) { editor.putString(key, value); editor.commit(); } public String getString(String key, String defaultValue) { return sp.getString(key, defaultValue); } public void putFloat(String key, float value) { editor.putFloat(key, value); editor.commit(); } public boolean isKeyExist(String key) { return sp.contains(key); } public float getFloat(String key, float defaultValue) { return sp.getFloat(key, defaultValue); } public void putBoolean(String key, boolean value) { editor.putBoolean(key, value); editor.commit(); } public boolean getBoolean(String key, boolean defaultValue) { return sp.getBoolean(key, defaultValue); } public void remove(String key) { editor.remove(key); editor.commit(); } }