学习 Android 中的 SharedPreferences
阅读:15
点赞:0
SharedPreferences 是 Android 中的一种数据存储选项,可以用于保存和检索少量数据。它以键值对的形式将原始数据类型(如 String、int、float 和 Boolean)保存在 XML 文件中。通过使用 SharedPreferences,开发者可以轻松地在应用中保存用户的登录信息、检查用户是否登录,以及在活动之间传递数据。
一. SharedPreferences 的基本用法
1.1 访问 SharedPreferences 对象
// 获取 SharedPreferences 对象
SharedPreferences sharedPreferences = getSharedPreferences("myAppSharedPreferences", Context.MODE_PRIVATE);
-
说明: 这里通过 getSharedPreferences
方法获取名为 "myAppSharedPreferences" 的 SharedPreferences 对象,模式设置为MODE_PRIVATE
,表示该文件仅可被本应用访问。
1.2 编辑和写入数据
// 获取 SharedPreferences.Editor
SharedPreferences.Editor editor = sharedPreferences.edit();
// 写入数据
editor.putString("EmployeeName", "exampleUser"); // 保存员工姓名
editor.putInt("EmployeeAge", 25); // 保存员工年龄
// 提交更改
editor.commit(); // 提交更改以保存数据
-
说明: 使用 Editor
对象进行数据的写入,putString
和putInt
方法用于保存不同类型的数据,最后调用commit()
方法提交更改。
1.3 读取数据
// 读取数据
String employeeName = sharedPreferences.getString("EmployeeName", "defaultValue"); // 获取员工姓名
int employeeAge = sharedPreferences.getInt("EmployeeAge", 0); // 获取员工年龄
-
说明: 使用 getString
和getInt
方法读取之前保存的数据,提供默认值以防数据不存在。
二. Kotlin 中的 SharedPreferences
Kotlin 对 SharedPreferences 的用法与 Java 相似,且增加了一些功能以防止空指针异常。
2.1 Kotlin 示例代码
val sharedPreferences = getSharedPreferences("myAppPreferences", Context.MODE_PRIVATE) // 获取 SharedPreferences
val employeeName = sharedPreferences.getString("EmployeeName", "defaultValue") // 获取员工姓名
val employeeAge = sharedPreferences.getInt("EmployeeAge", 0) // 获取员工年龄
-
说明: 这里使用 val
声明变量,获取 SharedPreferences 和数据的方法与 Java 相同。
三. 使用示例:便签应用
接下来,我们将通过一个简单的便签应用示例,演示如何使用 SharedPreferences 保存和加载数据。
3.1 XML 布局文件 (activity_notes.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="便签应用:"
android:textStyle="bold" />
<EditText
android:id="@+id/titleEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="标题" />
<EditText
android:id="@+id/contentEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="描述"
android:minLines="5" />
<Button
android:id="@+id/saveButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="保存" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="便签列表" />
<ScrollView
android:id="@+id/notesScrollView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:id="@+id/notesContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
</LinearLayout>
-
说明: 该布局文件定义了便签应用的界面,包含输入框、保存按钮和便签列表展示区域。
3.2 Java 代码示例
3.2.1 加载便签
private void loadNotesFromPreferences() {
SharedPreferences sharedPreferences = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); // 获取 SharedPreferences
int noteCount = sharedPreferences.getInt(KEY_NOTE_COUNT, 0); // 获取便签数量
for (int i = 0; i < noteCount; i++) {
String title = sharedPreferences.getString("note_title_" + i, ""); // 获取每个便签的标题
String content = sharedPreferences.getString("note_content_" + i, ""); // 获取每个便签的内容
Note note = new Note();
note.setTitle(title); // 设置便签标题
note.setContent(content); // 设置便签内容
noteList.add(note); // 将便签添加到便签列表中
}
}
3.2.2 保存便签
private void saveNotesToPreferences() {
SharedPreferences sharedPreferences = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); // 获取 SharedPreferences
SharedPreferences.Editor editor = sharedPreferences.edit(); // 获取编辑器
editor.putInt(KEY_NOTE_COUNT, noteList.size()); // 保存便签数量
for (int i = 0; i < noteList.size(); i++) {
Note note = noteList.get(i); // 获取便签对象
editor.putString("note_title_" + i, note.getTitle()); // 保存便签标题
editor.putString("note_content_" + i, note.getContent()); // 保存便签内容
}
editor.apply(); // 应用更改
}
-
说明: 这两个方法分别用于从 SharedPreferences 中加载和保存便签数据。
四. 结论
通过本文的讲解,我们了解了 Android 中 SharedPreferences 的基本用法及其在实际应用中的示例。SharedPreferences 提供了一种简单高效的方式来存储小量数据,适用于保存用户设置和应用状态。掌握 SharedPreferences 的使用对于提升 Android 开发技能具有重要意义。