首页 > 代码库 > SharedPreferences
SharedPreferences
偏好设定(SharedPreferences)?
在程序中保存一些配置参数的时候我们经常使用SharedPreferences
Context.getSharedPreferences(String name,int mode)
该方法可以在/data/data/<package>/shared_pref/目录下创建一个以name命名的xml文件,mode文件为模式
SharedPreferences的四种操作模式:
Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.
? 存储偏好
调用edit()方法可以获取一个Editor对象,对数据进行存储,存储之后需要调用commit()保存到文件
public void save(View view) {
String name = nameET.getText().toString();
String address = addressET.getText().toString();
String phone = phoneET.getText().toString();
String age = ageET.getText().toString();
// 偏好设定,xml 文件保存在 shared_pref 目录下
// 获取SharedPreferences, 文件名不要指定扩展名
// SharedPreferences preferences = getSharedPreferences("config", MODE_PRIVATE);
// 匿名方式,文件名和Activity名一致
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
Editor editor = preferences.edit(); // 获取编辑器,保证事务的原子性
try {
editor.putString("name", name);
editor.putString("address", address);
editor.putString("phone", phone);
editor.putInt("age", Integer.valueOf(age));
editor.commit(); // 提交数据, 保存到文件
Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
editor.clear(); // 提交数据, 保存到文件
Toast.makeText(getApplicationContext(), "保存失败", Toast.LENGTH_SHORT).show();
}
}
? 读取偏好
获得SharedPreferences之后调用getString()、getInt()等方法获取其中设置的值
? 在Activity中获取SharedPreferences
在Activity中可以调用getPreferences(int mode)方法获得一个SharedPreferences,文件名和Activity名一致
private void loadData() {
// 指定文件名
// SharedPreferences preferences = getSharedPreferences("config", MODE_PRIVATE);
// 匿名方式
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
String name = preferences.getString("name", "");
String address = preferences.getString("address", "");
String phone = preferences.getString("phone", "");
String age = String.valueOf(preferences.getInt("age", 20));
nameET.setText(name);
addressET.setText(address);
phoneET.setText(phone);
ageET.setText(age);
}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。