SharedPreferences [共享偏好]
,这是一种轻量级的数据保存方式,用来存储一些简单的配置信息,以键值对的方式存储在一个XML文件中。edit()
得到Editor对象putXxx()
方法实现数据写入;利用SharedPreferences对象的getXxx()
实现数据读取commit()
方法提交数据到指定的文件里Empty Activity
模板创建安卓应用 - ShareData
drawable
目录MainActivity
更名为FirstActivity
,对应的布局文件actiivty_main.xml
更名为activity_first.xml
Empty Activity
模板创建第二界面类strings.xml
多窗口共享数据 写入数据 读取文件 跳转第二个窗口
activity_first.xml
activity_second.xml
第一界面类 - FirstActivity
声明变量和常量
获取共享参数对象
获取编辑器对象
编写【写入数据】按钮单击事件处理方法
编写【跳转到第二个窗口】按钮单击事件处理方法
查看完整源代码
package net.hw.share_data;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;public class FirstActivity extends AppCompatActivity {private static final String NAME = "person_info"; // 配置文件名private static final int MODE = Context.MODE_PRIVATE; // 文件访问模式private SharedPreferences sp; // 共享参数对象private SharedPreferences.Editor editor; // 编辑器对象@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 利用布局资源文件设置用户界面setContentView(R.layout.activity_first);// 获取共享参数对象sp = getSharedPreferences(NAME, MODE);// 获取编辑器对象editor = sp.edit();}/*** 【写入数据】按钮单击事件处理方法** @param view*/public void doWriteData(View view) {// 将数据写入编辑器editor.putString("name", "华卫");editor.putString("gender", "男");editor.putInt("age", 50);editor.putString("hobby", "编程、音乐、阅读");// 提交数据,写入到指定的文件if (editor.commit()) {Toast.makeText(this, "恭喜,数据写入文件成功!", Toast.LENGTH_SHORT).show();findViewById(R.id.btn_jump_to_second).setEnabled(true); // 让【跳转到第二个窗口】按钮可用} else {Toast.makeText(this, "遗憾,数据写入文件失败!", Toast.LENGTH_SHORT).show();}}/*** 【跳转到第二个窗口】单击事件处理方法** @param view*/public void doJumpToSecond(View view) {// 创建跳转到第二个窗口的意图Intent intent = new Intent(this, SecondActivity.class);// 按意图启动第二个窗口startActivity(intent);}
}
第二界面类 - SecondActivity
定义常量和变量
通过控件资源标识符获得控件实例
获取共享参数对象
编写【读取数据】按钮单击事件处理方法
查看完整代码
package net.hw.share_data;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;public class SecondActivity extends AppCompatActivity {private static final String NAME = "person_info"; // 配置文件名private static final int MODE = Context.MODE_PRIVATE; // 文件访问模式private SharedPreferences sp; // 共享参数对象private TextView tvPersonInfo; // 个人信息标签@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 利用布局资源文件设置用户界面setContentView(R.layout.activity_second);// 通过控件资源标识符获得控件实例tvPersonInfo = findViewById(R.id.tv_person_info);}/*** 【读取数据】单击事件处理方法** @param view*/public void doReadData(View view) {// 通过共享参数对象读取文件数据String name = sp.getString("name", "");String gender = sp.getString("gender", "");int age = sp.getInt("age", 0);String hobby = sp.getString("hobby", "");// 创建个人信息字符串生成器StringBuilder builder = new StringBuilder();builder.append("姓名:" + name + "\n").append("性别:" + gender + "\n").append("年龄:" + age + "\n").append("爱好:" + hobby);// 获取个人信息字符串String personInfo = builder.toString();// 通过吐司显示个人信息Toast.makeText(this, personInfo, Toast.LENGTH_SHORT).show();// 将个人信息显示在标签里tvPersonInfo.setText(personInfo);}
}