Android学习——SharedPreferences
接下来的几个博文,来介绍安卓中的数据存储方式,安卓中的数据存储主要有四种方式:
1.SharedPreferences
2.SQLite
3.Content Provider
4.File
这篇博文主要介绍SharedPreferences存储方式。
SharedPreferences简介
SharedPreferences是android自带的一种轻量级的数据存储方式,本质是基于XML文件存储key-value键值对数据。由于其是轻量级的存储方式,所以通常用来存储一些简单的配置信息。虽然SharedPreferences是基于键值对的存储,但由于一些对象和图像可以转化成其对应的二进制编码,所以,SharedPreferences也可以实现对图片和对象的存储。
存储步骤
SharedPreferences对象,本身只能获取数据,而不能存储和修改。存储和修改需要editor对象实现,所以具体步骤如下:
1.获取SharedPreferences对象
2.通过SharedPreferences.edit()获取Editor对象
3.通过Editor接口的PutXXX方法来保存键值,其中XXX对应不同的数据类型
代码实现
利用SharedPreferences实现一个用户注册和登录界面,用户注册部分代码如下:
1.实例化SharedPreferences对象和Editor对象:
其中,注释语句中的代码只能把数据存入默认文件中,而getSharedPreferences方法可以制定存放的文件。
private void InitSharedPreferences() {
// users= PreferenceManager.getDefaultSharedPreferences(SignupActivity.this);
users=getSharedPreferences("users",MODE_PRIVATE);
editor=users.edit();
}
2.设置点击注册按钮后的点击事件:
在存储的文件中,把Key值设为用户名,Value值设为密码。需要注意的是,Java语言中,判断两个字符串是否相等,或者判断一个字符串是否为空,均需要调用String类中的方法equal和isEmpty,而不能直接用’==’或’!=’进行比较。
signup_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username=username_text.getText().toString();
String passward=passward_text.getText().toString();
if(username.isEmpty())
Toast.makeText(getApplicationContext(),"请输入用户名",Toast.LENGTH_SHORT).show();
else if(passward.isEmpty())
Toast.makeText(getApplicationContext(),"请输入密码",Toast.LENGTH_SHORT).show();
else
{
String name=users.getString(username,"");
if(!name.isEmpty())
Toast.makeText(getApplicationContext(),"用户名已存在,请使用其他用户名注册",Toast.LENGTH_SHORT).show();
else
{
editor.putString(username,passward);
editor.commit();
Toast.makeText(getApplicationContext(),"注册成功!",Toast.LENGTH_SHORT).show();
finish();
}
}
}
});
登录界面代码如下:
signin_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username=username_text.getText().toString();
String passward=passward_text.getText().toString();
if(username=="")
Toast.makeText(getApplicationContext(),"请输入用户名",Toast.LENGTH_SHORT).show();
else if(passward=="")
Toast.makeText(getApplicationContext(),"请输入密码",Toast.LENGTH_SHORT).show();
else //用户名和密码均不为空
{
String passward_get=sharedPreferences.getString(username,"");
if(passward_get.isEmpty())
Toast.makeText(getApplicationContext(),"用户名不存在,请重新输入",Toast.LENGTH_SHORT).show();
else //用户名存在
{
if(!passward_get.equals(passward)) //密码错误
Toast.makeText(getApplicationContext(),"密码错误,请重新输入",Toast.LENGTH_SHORT).show();
else //密码正确,看是否自动登录,存入对应数据,然后登录界面
{
if(islogin.isChecked())
{
editor.putString("isLogin",username);
editor.commit();
}
else
{
editor.putString("isLogin","");
editor.commit();
}
Intent intent=new Intent(SigninActivity.this,MainActivity.class);
startActivity(intent);
}
}
}
}
});
界面展示



Android学习——SharedPreferences的更多相关文章
- 18.Android之SharedPreferences数据存储学习
SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来 ...
- 学习Android之SharedPreferences使用
效果图例如以下: 当我们想让自己的属性设置保存下来,这时就须要SharedPreferences. 上面这个小程序,音乐状态是保存下来的.使用的上一次退出的状态. 进入DDMS,data文件下的dat ...
- Android学习总结——SharedPreferences
SharePreferences存储方式,只是轻量级数据存储,xml格式的数据显示方式.简单存储步骤如下:一:获取SharePreferences对象1.SharedPreferences pref ...
- Android学习之SharedPreferences类
SharedPreferences类 android.content.SharedPreferences 类概括: 访问和修改由函数getSharedPreferences(String,int)返回 ...
- Android学习笔记_8_使用SharedPreferences存储数据
1.SharedPreferences介绍: Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用SharedPrefer ...
- Android学习(九) SharedPreferences
一.SharedPreferences:一种清醒的存储方式,基于XML存储key-value键值对方式的数据. SharedPreferences对象本身只能获取数据,而不能存储和修改数据,存储修改只 ...
- Android学习路线总结,绝对干货
title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...
- Android 学习笔记之数据存储SharePreferenced+File
学习内容: Android的数据存储.... 1.使用SharedPreferences来保存和读取数据... 2.使用File中的I/O来完成对数据的存储和读取... 一个应用程序,经常需要与用 ...
- android学习系列:jercy——AI3 的博客
[android学习之十七]——特色功能2:桌面组件(快捷方式,实时文件夹) 二.桌面组件 1.快捷方式 Android手机上得快捷方式的意思可以以我们实际PC机器上程序的快捷方式来理解.而andro ...
随机推荐
- P2762 太空飞行计划问题
传送门 经典的最大权闭合子图问题 实验有正的价值,仪器的价值为负 为了实验我们必须选择相应的仪器 所以从 S 连向实验,边权为实验的价值 实验与相应仪器之间连边,边权为 INF 仪器连向 T 边权为仪 ...
- Dojo2 前端框架基本操作
安裝CLI,需要先有npm: npm install -g @dojo/cli npm install -g @dojo/cli-create-app 创建项目目录,-n 后面是名字,创建完成后会自动 ...
- Python入门(1)
1.编程语言 机器语言:直接用计算机能听懂的二进制指令去编写程序,需要了解硬件的细节 汇编语言:用英文标签取代二进制指令去编写程序,同样需要了解硬件的细节 高级语言:直接用人类能理解的表达方式去编写程 ...
- 第四次 Scrum Meeting
第四次 Scrum Meeting 写在前面 会议时间 会议时长 会议地点 2019/4/8 22:00 30min 大运村1号楼3F 附Github仓库:WEDO 例会照片 工作情况总结(4.8) ...
- java多线程-Lock
大纲: Lock接口 synchronized&Lock异同 一.Lock public interface Lock { void lock(); void lockInterruptibl ...
- linux 卡在进度条进不去解决办法之一
centos为例 一, 如下: 如果这个地方卡住了的话也许是你上次改了passwd文件,这个是其中一个情况. 如果刚刚开机就卡住了或者怎么卡住了的话在开机的读条时候摁esc显示读取的进程,根据显示的错 ...
- C# MODBUS 通信
背景 电厂有多组监控设备,需要在指定的设备上显示某些数据(其他设备对接过来的).通信协议是modbus主从结构. 源码: http://download.csdn.net/download/wolf1 ...
- PHP 设置 socket连接
摘要: 作者博文地址:https://www.cnblogs.com/liu-shuai/ nginx和fastcgi的通信方式有两种,一种是TCP的方式,一种是unix socket方式. sock ...
- matlab中如何根据t检验参数查找t检验值
这个问题花了一些时间.先看图 这个是t检验里面的公式,但是如何在matlab中找到该式子对应的值,我现在才知道. 就是这样:x=tinv(1-α/2,n-1)----t(n)分布的上侧α分位数 ...
- 【Linux相识相知】任务计划和周期性任务
在我们的生活中,有的工作是例行的,例如每年一次加薪.每年给女朋友过一次生日.每天上班都要打卡等,有的工作是临时发生的,例如明天朋友要来访,你需要准备午餐等等. 像很多例行的工作,你一旦忙起来就很容易忘 ...