SharePreferences 是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。只能在同一个包内使用,不能在不同的包之间使用,其实也就是说只能在创建它的应用中使用,其他应用无法使用。通过Context.getSharedPreferences方法获取SharedPreferences对象,参数分别为存储的文件名和存储模式。
操作。SharePreferences存储数据是通过获取Editor编辑器对象来操作的。
插入数据:调用Editor.putxxxx方法,两个参数分别为键和值。
获取数据:调用Editor.getxxxx方法,两个参数分别为键和不存在指定键时的默认值。
删除数据:调用Editor.remove方法,参数为指定的键。
清空所有数据:调用Editor.clear方法
上述所有方法调用都要执行Editor.commit方法来提交。
以下的代码实现一个简单的Demo:
package com.scxh.android1502.preference;
import android.content.Context;
import android.content.SharedPreferences;
import com.scxh.android1502.bean.User;
/**
* 1.获取SharedPreferences对象 2.写入对象数据 3.读取对象数据 4.清空
*
*/
public class SharedPreferencesHelper {
private static final String PREFERENCE_NAME = "PREFERENCE_USER_FILE_KEY";
private static final String ID = "ID";
private static final String NAME = "NAME";
private static final String PASSWORD = "PASSWORD";
private SharedPreferences mSharedPreferences;
private static SharedPreferencesHelper PREFERENCE_HELPER = null;
public static SharedPreferencesHelper getInstancePreferencesHelper(Context context) {
if (PREFERENCE_HELPER == null) {
PREFERENCE_HELPER = new SharedPreferencesHelper(context);
}
return PREFERENCE_HELPER;
}
private SharedPreferencesHelper(Context context) {
mSharedPreferences = context.getSharedPreferences(PREFERENCE_NAME,Context.MODE_PRIVATE);
}
/**
* 写入user对象数据
* @param user
*/
public void saveUserToPreferences(User user){
SharedPreferences.Editor editor = mSharedPreferences.edit();
editor.putInt(ID, user.getId());
editor.putString(NAME, user.getName());
editor.putString(PASSWORD, user.getPassWord());
editor.commit();
}
/**
* 读取user对象数据
* @return
*/
public User getUserFromPreferences(){
int id = mSharedPreferences.getInt(ID, 0);
String name = mSharedPreferences.getString(NAME, "");
String passWord = mSharedPreferences.getString(PASSWORD, "");
User user = new User();
user.setId(id);
user.setName(name);
user.setPassWord(passWord);
return user;
}
/**
* 清空数据
*/
public void clear(){
SharedPreferences.Editor editor = mSharedPreferences.edit();
editor.clear();
editor.commit();
}
}
package com.scxh.android1502.preference;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import com.scxh.android1502.R;
import com.scxh.android1502.bean.User;
public class SharePreferenceActivity extends Activity {
private EditText mUserNameEdit, mPassWordEdit;
private Button mConfirmBtn;
private static final String PREFERENCE_NAME = "com.scxh.android1502_PREFERENCE_USER_FILE_KEY";
private SharedPreferences mPreference;
private SharedPreferencesHelper mSharedPreferencesHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preference1_layout);
mUserNameEdit = (EditText) findViewById(R.id.preference_name_edit);
mPassWordEdit = (EditText) findViewById(R.id.preference_password_edit);
mConfirmBtn = (Button) findViewById(R.id.preference_comfirm_btn);
mSharedPreferencesHelper = SharedPreferencesHelper.getInstancePreferencesHelper(this);
mConfirmBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String name = mUserNameEdit.getText().toString();
String passWord = mPassWordEdit.getText().toString();
User user = new User();
user.setName(name);
user.setPassWord(passWord);
mSharedPreferencesHelper.saveUserToPreferences(user);
}
});
User user = mSharedPreferencesHelper.getUserFromPreferences();
if(!user.getName().equals("")){
mUserNameEdit.setText(user.getName());
}
if(!user.getPassWord().equals("")){
mPassWordEdit.setText(user.getName());
}
}
/**
* 学习PreFerence简单使用
*/
public void learnPrimaryPreference() {
// 获取SharedPreferences对象
mPreference = getSharedPreferences(PREFERENCE_NAME, MODE_PRIVATE);
mConfirmBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 写数据到sharepreference
SharedPreferences.Editor editor = mPreference.edit();
editor.putString("USER_NAME", mUserNameEdit.getText()
.toString());
editor.commit();
}
});
// 从sharepreference读取数据
String value = mPreference.getString("USER_NAME", "");
if (!value.equals("")) {
mUserNameEdit.setText(value);
}
}
}