SharedPreferences 简称 sp,是 Android 平台上一个轻量级的存储类,一般应用程序都会提供“设置”或者“首选项”等这样的界面,那么这些设置就可以通过 sp 来保存。
在 Android 系统中该文件保存在:/data/data/包名 /shared_prefs 目录下。
在本篇中依然使用上篇(文件存储篇)中的需求,只不过将数据的存储方式改为 sp。因此需求和布局就不再赘述。如有需要看上篇:
public class MainActivity extends Activity {
private EditText et_name;
private EditText et_pwd;
private CheckBox cb;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取控件
et_name = (EditText) findViewById(R.id.et_name);
et_pwd = (EditText) findViewById(R.id.et_pwd);
cb = (CheckBox) findViewById(R.id.cb);
/*
* 调用父类的方法获取 sp 对象 第一个参数:sp 文件的名字,没有则创建 第二个参数:文件权限
*/
sp = getSharedPreferences("info", MODE_PRIVATE);
// 数据的回显
// 从 sp 中获取数据
String name = sp.getString("name", "");
String pwd = sp.getString("pwd", "");
// 给 EditText 设置数据
et_name.setText(name);
et_pwd.setText(pwd);
}
/*
* 给登录按钮绑定的点击事件
*/
public void login(View view) {
// 获取 EditText 中的数据
String name = et_name.getEditableText().toString().trim();
String pwd = et_pwd.getText().toString().trim();
// 校验数据
if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
Toast.makeText(this, R.string.info_txt, Toast.LENGTH_SHORT).show();
return;
}
// 获取 CheckBox 的选中状态
boolean checked = cb.isChecked();
// 保存数据 name##pwd
if (checked) {
try {
/*
* 如果想往 sp 中添加、修改、删除数据则需要通过 sp 获取到 Editor
*/
Editor editor = sp.edit();
// 设置数据
editor.putString("name", name);
editor.putString("pwd", pwd);
// 一定要记得执行提交方法,不然前面保存的数据没有任何效果
editor.commit();
} catch (Exception e) {
e.printStackTrace();
}
} else {
// 删除数据
Editor edit = sp.edit();
edit.clear();
edit.commit();
}
}
}
最后sp 的使用方法总结
一、获取 SharedPreferences 对象
1. sp = getSharedPreferences("info", MODE_PRIVATE);
二、添加/ 修改数据
1. /*
2. * 如果想往 sp 中添加、修改、删除数据则需要通过 sp 获取到 Editor
3. */
4. Editor editor = sp.edit();
5. // 设置数据
6. editor.putString("name", name);
7. editor.putString("pwd", pwd);
8. // 一定要记得执行提交方法,不然前面保存的数据没有任何效果
9. editor.commit();
三、获取数据
1. /*
2. * 从 sp 中获取数据
3. * 第一个参数相当于 key
4. * 第二个参数是该值如果获取不到的默认值
5. */
6. String name = sp.getString("name", "");
7. String pwd = sp.getString("pwd", "");
四、删除数据
1. // 删除数据
2. Editor edit = sp.edit();
3. //清空所有
4. edit.clear();
5. //删除 key 为 name 的数据
6. edit.remove("name");
7. //提交
8. edit.commit();
五、sp 的连点操作
Editor 的每个方法都返回了自己本身,因此支持连点操作。将添加数据使用连点操作的方式修改
后如下:
1. //连点操作
2. sp.edit().putString("name",name).putString("pwd", pwd).commit();