安卓学习笔记27:共享参数
文章目录
- 零、学习目标
- 一、数据存储
- 二、共享参数
- (一)共享参数概述
- (二)利用共享参数读写文件步骤
- 三、案例演示——读写数据
- (一)运行效果
- (二)实现步骤
- 1、创建安卓应用【ReadWriteData】
- 2、将背景图片拷贝到drawable目录
- 3、主布局资源文件activity_main.xml
- 3、字符串资源文件strings.xml
- 4、主界面类 - MainActivity
- 5、启动应用,查看效果
- 6、查看保存数据的文件
- 三、课后作业
- 任务:利用共享参数实现用户注册
零、学习目标
- 理解共享参数的作用与特点
- 掌握利用共享参数读写文件的步骤
一、数据存储
- 共享参数
- 文件流操作
- SQLite应用
- XML与JSON解析
二、共享参数
(一)共享参数概述
安卓提供了一种简单的数据存储方式SharedPreferences,这是一种轻量级的数据保存方式,用来存储一些简单的配置信息,以键值对的方式存储在一个XML文件中。
(二)利用共享参数读写文件步骤
- 利用Activity的getPreferences(name, mode)方法得到SharedPreferences对象
- 使用SharedPreferences对象的edit()得到Editor对象
- 利用Editor对象的putXxx()方法实现数据写入;利用SharedPreferences对象的getXxx()实现数据读取
- 对于写入操作,利用Editor对象的commit()方法提交数据到指定的文件里
三、案例演示——读写数据
(一)运行效果
(二)实现步骤
1、创建安卓应用【ReadWriteData】
2、将背景图片拷贝到drawable目录
3、主布局资源文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<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:background="@drawable/background"android:orientation="vertical"android:gravity="center"tools:context=".MainActivity"><Buttonandroid:id="@+id/btnWriteData"android:layout_width="200dp"android:layout_height="wrap_content"android:onClick="doWriteData"android:text="@string/write_data"android:textSize="18sp" /><Buttonandroid:id="@+id/btnReadData"android:layout_width="200dp"android:layout_height="wrap_content"android:onClick="doReadData"android:text="@string/read_data"android:textSize="18sp" />
</LinearLayout>
3、字符串资源文件strings.xml
<resources><string name="app_name">共享参数演示——读写数据</string><string name="write_data">写入数据</string><string name="read_data">读取数据</string>
</resources>
4、主界面类 - MainActivity
- 声明常量与变量
- 获取共享参数与编辑器对象
- 编写写入数据按钮单击事件处理方法
- 编写读取文件按钮单击事件处理方法
- 查看主界面类源代码
package net.hw.read_write_data;import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {private static final String NAME = "person_info"; // 文件名private static final int MODE = Context.MODE_PRIVATE; // 访问模式private SharedPreferences sharedPreferences; // 共享参数private SharedPreferences.Editor editor; // 编辑器@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 利用布局资源文件设置用户界面setContentView(R.layout.activity_main);// 1. 获取共享参数对象sharedPreferences = getSharedPreferences(NAME, MODE);// 2. 获取编辑器对象editor = sharedPreferences.edit();}/*** 写入数据按钮单击事件处理方法** @param view*/public void doWriteData(View view) {// 3. 通过编辑器写入数据editor.putString("name", "华卫");editor.putString("gender", "男");editor.putInt("age", 48);editor.putString("hobby", "旅游、音乐、编程");// 4. 提交数据,数据保存到指定文件if (editor.commit()) {Toast.makeText(this, "恭喜,数据写入文件成功!", Toast.LENGTH_SHORT).show();} else {Toast.makeText(this, "遗憾,数据写入文件失败!", Toast.LENGTH_SHORT).show();}}/*** 读取数据按钮单击事件处理方法** @param view*/public void doReadData(View view) {// 5. 通过共享参数对象读取文件内容String name = sharedPreferences.getString("name", "");String gender = sharedPreferences.getString("gender", "");int age = sharedPreferences.getInt("age", 0);String hobby = sharedPreferences.getString("hobby", "");// 6. 判断文件是否存在if (name.equals("")) {Toast.makeText(this, "温馨提示:你还没有写入数据到文件呢!", Toast.LENGTH_SHORT).show();} else {// 7. 创建个人信息字符串生成器StringBuilder builder = new StringBuilder();builder.append("姓名:" + name + "\n").append("性别:" + gender + "\n").append("年龄:" + age + "\n").append("爱好:" + hobby + "\n");// 8. 获取个人信息字符串String personInfo = builder.toString();// 9. 通过吐司显示个人信息Toast.makeText(this, personInfo, Toast.LENGTH_SHORT).show();}}
}
5、启动应用,查看效果
- 由于数据是写入了文件的,因此,退出应用之后再进入,依然可以读取数据。
6、查看保存数据的文件
- 双击安卓Sdk\tools里的monitor.bat,启动DDMS
data目录点不开,因为没有权限(drwxrwx–x)
启动命令行,键入adb shell
切换到系统用户(超级管理员)
提示:su未找到。
因为我们使用的虚拟机(Pixel 2 API24)是基于Google Play的,因此没有权限。
基于Android 7.0 (Google APIs)创建虚拟机(Pixel 2 API 24 2)
在新建的虚拟机(Pixel 2 API 24 2)上启动应用
在adb shell里给/data与/data/data授权
adb root
adb shell
chmod 777 /data
chmod 777 /data/data
- 给应用程序(net.hw.read_write_data)授权
chmod 777 /data/data/net.hw.read_write_data
chmod 777 /data/data/net.hw.read_write_data/shared_prefs
chmod 777 /data/data/net.hw.read_write_data/shared_prefs/person_info.xml
在DDMS的File Explorer里找到person_info.xml文件
文件person_info.xml在data\data\net.hw.read_write_data\shared_prefs里
将person_info.xml文件导出到电脑上
查看person_info.xml文件内容
将应用运行在基于Android 6.0(API 23)的虚拟机上
单击【写入数据】按钮
单击【读取数据】按钮
利用adb shell查看生成的文件
adb shell
cd data/data/net.hw.read_write_data/shared_prefs
ls
cat person_info.xml
三、课后作业
任务:利用共享参数实现用户注册
- 创建两个窗口:注册窗口(包含姓名、性别、年龄和爱好信息)、显示注册信息
- 单击注册窗口的【注册】按钮,利用共享参数保存注册信息,并且跳转到显示注册信息窗口
- 在显示注册信息窗口通过共享参数读取各项注册信息并且显示在标签控件里
安卓学习笔记27:共享参数相关推荐
- Android:安卓学习笔记之共享元素的简单理解和使用
Android 共享元素的简单理解和使用 1 .基本概念 2.基本使用 1.Activity to Activity跳转实现 1.1.使用步骤 1.2.案例说明 2.Fragment to Fragm ...
- 2020年安卓学习笔记目录
文章目录 一.讲课笔记 二.安卓案例 三.安卓实训项目 四.学生安卓学习博客 五.安卓课后作业 (一)界面设计练习 1.制作登录界面 2.制作部队管理界面 3.制作灭火救援界面 4.制作交付界面 5. ...
- jmh学习笔记-State共享对象
系列文章目录 jmh学习笔记-源代码编译与bench mode jmh学习笔记-State共享对象 jmh学习笔记-State共享对象前后置方法 jmh学习笔记-代码清除 jmh学习笔记-常量折叠 j ...
- [原创]Saltstack学习笔记:命令参数详解以及配置文件说明
很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...
- oracle修改asm参数文件,学习笔记:Oracle RAC参数文件管理 修改创建asm中的spfile文件...
天萃荷净 Oracle rac创建修改asm中的spfile文件内容 create spfile to asm --查看sid SQL> show parameter instance_name ...
- Redis运维和开发学习笔记(4) Redis参数意义
Redis运维和开发学习笔记(4) Redis参数意义 文章目录 Redis运维和开发学习笔记(4) Redis参数意义 参数意义 参数意义 Client连接 问题 id=567800790 addr ...
- 安卓学习笔记07:事件处理、窗口跳转与传递数据
文章目录 零.学习目标 一.三个基本控件 1.标签控件(TextView) 2.编辑框控件(EditText) 3.按钮控件(Button) 二.安卓事件处理机制 (一)安卓事件处理概述 (二)安卓事 ...
- HALCON 21.11:深度学习笔记---设置超参数(5)
HALCON 21.11:深度学习笔记---设置超参数(5) HALCON 21.11.0.0中,实现了深度学习方法.关于超参数的有关设置内容如下: 不同的DL方法是为不同的任务设计的,它们的构建方式 ...
- 很low的安卓学习笔记(一、实用技巧)
很low的安卓学习笔记(一.实用技巧) 一.学习了几天的实用技巧小总结: 1.规范的定义内容的格式: 2.一些快捷键 3.将xxx.xml布局改为Activity中可以调用的View视图 4.当左下角 ...
最新文章
- python算法集合_python – 一个集合联合查找算法
- 解决git clone慢问题
- Firefox火狐浏览器自用技巧汇总--以备使用--13.5.16
- QT的QDesignerMemberSheetExtension类的使用
- EventBus in SAP UI5 and Kyma
- 初二模拟赛总结(2019.8.7)
- Python自制微信机器人:群发消息、自动接收好友
- mysql回表查询uuid_MySQL数据库回表与索引
- 安装fitz报错_动态 - Fitz999的个人空间 - OSCHINA
- Oracle学习资料分享(含教程、笔记、题库下载与学习方法)
- SanDisk U盘加密软件 在其他u盘使用
- Java的sort用法深究,compare按照姓氏排序
- 不信谣,不传谣,不造谣
- Airbnb、小猪短租等这类短租类产品发展前景如何?
- 跨语言rpc框架Thrift
- [转帖] 丰富多彩的开放课程资源
- 英国只能设置A记录且无法更改的免费二级域名
- Inkscape美工教程
- 微信小程序 发布新版本后 强制升级
- 2020最全的BAT大厂面试题整理改版3面直接拿到offer
热门文章
- 关于物联网规则引擎技术,你想要知道的都在这儿!
- ios nstimer实现延时_iOS 中常见 Crash 总结
- c语言翻译时为0运行为2,高级语言程序设计:、二章习题解答
- psv应用java_PSV内容管理功能详细说明
- opengl学习笔记 (一)
- spring boot整合shiro继承redis_Springboot+Shiro+redis整合
- Spark自定义分区(Partitioner)
- display内联属性
- hypertrm超级终端_win7电脑怎么添加windows超级终端
- 语言常用c100单词,英语口语练习_夏普新款PW-C100-G电子词典测评_沪江英语