一、设计需求
设计一个页面有两个编辑框,分别输入学号和姓名。有两个按钮,一个是修改按钮,当按下修改按钮,编辑框可以进行编辑;一个是保存按钮,当按下保存按钮,使编辑框显示当前的内容并且编辑框不可编辑,此外,在关闭app之后再次打开app,编辑框内容是按下保存按钮之后的内容。
二、程序文件
布局文件activity_main.xml的代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/nameEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="姓名"
android:enabled="false" />
<EditText
android:id="@+id/idEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="学号"
android:enabled="false" />
<Button
android:id="@+id/modifyButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="修改" />
<Button
android:id="@+id/saveButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="保存" />
</LinearLayout>
对应的MainActivity.java文件代码如下:
package com.example.myapplication;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText idEditText; // 学号编辑框
private EditText nameEditText; // 姓名编辑框
private Button modifyButton; // 修改按钮
private Button saveButton; // 保存按钮
private String currentId; // 当前学号
private String currentName; // 当前姓名
private boolean isEditable = false; // 编辑框是否可编辑的标志
private SharedPreferences sharedPreferences; // SharedPreferences对象,用于存储数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化视图组件
idEditText = findViewById(R.id.idEditText);
nameEditText = findViewById(R.id.nameEditText);
modifyButton = findViewById(R.id.modifyButton);
saveButton = findViewById(R.id.saveButton);
// 获取SharedPreferences实例
sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
// 修改按钮的点击监听器
modifyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isEditable = true;
idEditText.setEnabled(true);
nameEditText.setEnabled(true);
}
});
// 保存按钮的点击监听器
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isEditable = false;
currentId = idEditText.getText().toString();
currentName = nameEditText.getText().toString();
idEditText.setEnabled(false);
nameEditText.setEnabled(false);
// 保存编辑框的内容到SharedPreferences
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("id", currentId);
editor.putString("name", currentName);
editor.apply();
}
});
}
@Override
protected void onResume() {
super.onResume();
if (!isEditable) {
idEditText.setEnabled(false);
nameEditText.setEnabled(false);
// 从SharedPreferences加载编辑框的内容
currentId = sharedPreferences.getString("id", "");
currentName = sharedPreferences.getString("name", "");
idEditText.setText(currentId);
nameEditText.setText(currentName);
}
}
}
代码逻辑如下:
- onCreate() 方法:在应用程序启动时调用,用于初始化界面组件和设置按钮的点击监听器。
- modifyButton 点击监听器:当点击修改按钮时,将使编辑框变为可编辑状态。
- saveButton 点击监听器:当点击保存按钮时,将获取编辑框中的学号和姓名,并将其保存到 SharedPreferences 中。
- onResume() 方法:在应用程序恢复活动状态时调用,用于从 SharedPreferences 中加载保存的学号和姓名,并设置到编辑框中。
三、SharedPreferences介绍
SharedPreferences 是 Android 提供的一种轻量级的存储机制,用于在应用程序中存储和检索简单的键值对数据。它是基于键值对的文件存储系统,以 XML 格式保存数据,并将其存储在应用程序的私有目录中。
常见的操作步骤如下:
- 获取 SharedPreferences 实例:通过调用
getSharedPreferences()
方法或getPreferences()
方法获取 SharedPreferences 实例。getSharedPreferences() 方法用于获取具有自定义名称的 SharedPreferences 实例,而 getPreferences() 方法获取默认名称的 SharedPreferences 实例。
SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
- 编辑 SharedPreferences:通过调用 SharedPreferences 实例的
edit()
方法获取 SharedPreferences.Editor 实例,从而可以开始编辑 SharedPreferences 文件。然后,可以使用 SharedPreferences.Editor 实例的方法来添加、修改或删除数据。
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("key", "value"); // 添加或修改数据
editor.remove("key"); // 删除数据
- 提交编辑:在完成对 SharedPreferences 文件的修改后,必须调用 SharedPreferences.Editor 实例的
apply()
方法或commit()
方法来提交编辑,以确保修改生效。
editor.apply(); // 异步提交修改
editor.commit(); // 同步提交修改
- 读取数据:通过 SharedPreferences 实例的
getXXX() 方法
(例如getString()、getInt()、getBoolean()
等)读取已保存的数据。
String value = sharedPreferences.getString("key", defaultValue); // 读取字符串数据,可设置默认值
四、结果展示
点击修改按钮,可以对姓名和学号编辑框进行编辑。当点击保存按钮,可以对信息进行保存,同时锁死编辑框,使编辑框无法编辑,直到再次点击修改按钮。
当APP退出重开时,会显示上次保存的结果。
未来可期
文章到这里就要结束了,但故事还没有结局
如果本文对你有帮助,记得点个赞👍哟,也是对作者最大的鼓励🙇♂️。
如有不足之处可以在评论区👇多多指正,我会在看到的第一时间进行修正
作者:爱打瞌睡的CV君
CSDN:https://blog.csdn.net/qq_44921056
本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。