SharedPreferences 是 Android 中用于存储小量数据的一种机制,它提供了一种简单的 key-value 存储方式,适合用于存储轻量级的配置信息、用户偏好设置等。
例子:
关于界面我就直接写好了。如下图
要把文本四个1保存进xml里
1.首先 创建了一个名为 "config" 的 SharedPreferences 对象,并指定了访问模式为 Context.MODE_PRIVATE
。这意味着只有创建该 SharedPreferences 对象的应用程序才能访问它,其他应用程序无法访问或修改其中的数据。
SharedPreferences preferences = getSharedPreferences("config", Context.MODE_PRIVATE);
2.将用户在界面上输入的姓名、年龄、身高、体重以及是否已婚等信息保存到 SharedPreferences 中。
// 从 EditText 中获取用户输入的姓名
String name = et_name.getText().toString();
// 从 EditText 中获取用户输入的年龄
String age = et_age.getText().toString();
// 从 EditText 中获取用户输入的身高
String height = et_height.getText().toString();
// 从 EditText 中获取用户输入的体重
String weight = et_weight.getText().toString();
// 获取 SharedPreferences 对象的编辑器
SharedPreferences.Editor editor = preferences.edit();
// 将用户输入的姓名以字符串形式存储到 SharedPreferences 中
editor.putString("name", name);
// 将用户输入的年龄以整数形式存储到 SharedPreferences 中(需先将字符串转换为整数)
editor.putInt("age", Integer.parseInt(age));
// 将用户输入的身高以浮点数形式存储到 SharedPreferences 中(需先将字符串转换为浮点数)
editor.putFloat("height", Float.parseFloat(height));
// 将用户输入的体重以浮点数形式存储到 SharedPreferences 中(需先将字符串转换为浮点数)
editor.putFloat("weight", Float.parseFloat(weight));
// 将用户是否已婚的选择状态存储到 SharedPreferences 中(以布尔值形式存储)
editor.putBoolean("married", ck_married.isChecked());
// 提交编辑操作,使更改生效
editor.commit();
3.现在已经保存在本地里了
这里和你的项目名一样
4.那么如何下次打开显示上一次保存的数据呢?
很简单,刚才我们已经把数据放进preferences 里面了,现在我们只需要根据键值来取出来,并在oncreate函数里面加载。那么下次打开项目就会自动显示了。
/**
* 重新加载 SharedPreferences 中保存的用户信息到界面上
*/
private void reload() {
// 从 SharedPreferences 中获取用户姓名,如果为null表示没有存储该信息
String name = preferences.getString("name", null);
if (name != null) {
// 如果姓名不为null,则将其设置到姓名的 EditText 中显示
et_name.setText(name);
}
// 从 SharedPreferences 中获取用户年龄,如果为0表示没有存储该信息
int age = preferences.getInt("age", 0);
if (age != 0) {
// 如果年龄不为0,则将其设置到年龄的 EditText 中显示
et_age.setText(String.valueOf(age));
}
// 从 SharedPreferences 中获取用户身高,如果为0表示没有存储该信息
float height = preferences.getFloat("height", 0f);
if (height != 0f) {
// 如果身高不为0,则将其设置到身高的 EditText 中显示
et_height.setText(String.valueOf(height));
}
// 从 SharedPreferences 中获取用户体重,如果为0表示没有存储该信息
float weight = preferences.getFloat("weight", 0f);
if (weight != 0f) {
// 如果体重不为0,则将其设置到体重的 EditText 中显示
et_weight.setText(String.valueOf(weight));
}
// 从 SharedPreferences 中获取用户是否已婚的信息,默认为false表示未存储该信息
boolean married = preferences.getBoolean("married", false);
// 将获取到的已婚状态设置到已婚的 CheckBox 中显示
ck_married.setChecked(married);
}