接下来的几个博文,来介绍安卓中的数据存储方式,安卓中的数据存储主要有四种方式:

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() {@Overridepublic 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() {@Overridepublic 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);}}}}});

界面展示


转载于:https://www.cnblogs.com/J-inx/p/6354286.html

Android学习——SharedPreferences相关推荐

  1. Android学习笔记---16_采用SharedPreferences保存用户偏好设置参数

    16_采用SharedPreferences保存用户偏好设置参数 Android学习笔记---16_采用SharedPreferences保存用户偏好设置参数 2013-03-08 16_采用Shar ...

  2. 学习Android之SharedPreferences使用

    效果图例如以下: 当我们想让自己的属性设置保存下来,这时就须要SharedPreferences. 上面这个小程序,音乐状态是保存下来的.使用的上一次退出的状态. 进入DDMS,data文件下的dat ...

  3. Android学习路线

    Android学习路线 第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环.  2.String和StringBuffer的使用.正则表达式.  3.面向对象的抽象,封装,继承 ...

  4. 《Android学习指南》目录

    转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先 ...

  5. Android学习路线总结

    title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...

  6. Android 系统(206)---Android 学习网站汇总

    Android 学习网站汇总 <DT><H3 ADD_DATE="1515811987" LAST_MODIFIED="0">技术博客( ...

  7. Android:学习路线总结,绝对干货

    转载请注明出处:http://blog.csdn.net/lowprofile_coding/article/details/51252781 一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工 ...

  8. Android学习之——APP番茄工作法——小结(1)

    2014-4-3补: 最近一直忘记回复:给位需要源码的,请到这里https://github.com/MrFuFuFu/TomatoTask  版本已经更新为1.0.1,且已在豌豆荚,应用宝,360手 ...

  9. Android学习--02(猜猜我的星座App源码+Android常用控件TextView+EditText+Button+ImangeView+DatePicker+App间通信+跳转页面)

    猜猜我的星座App 1 Android常用控件 1.1 TextView控件 1.1.1 简介 1.1.2属性 1.1.3 扩展属性 1.1.4 TextView的使用方法 1.1.5总结 1.2 E ...

最新文章

  1. 数据统计之日增用户统计
  2. LBS 基于位置的服务
  3. MSB3721 命令““C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.exe“ 已退出 返回代码为1
  4. 【聚类算法】sklearn聚类方法详解
  5. 微信小程序_组件学习_001
  6. 系统架构设计师 - 第三方认证服务
  7. tomcat配置及其中部分目录作用虚拟路径虚拟主机
  8. 面试题10:二进制中1的个数
  9. 张云飞 201771010143 《面对对象程序设计(java)》第十七周学习总结
  10. Angularjs interceptor
  11. Nginx的静态文件合并请求,加快网站的加载速度
  12. 背景知识:从熵(Entropy)到互信息(MI,Mutual Information)
  13. RPS基准点系统 2020
  14. C语言中的各种百分号都代表什么意思
  15. 趣图:程序员先发现下雨了
  16. redis常用命令getex_Redis常用命令整理
  17. 欢迎来到北工大换书网
  18. 鲁大师9m超级精简版
  19. 第001讲:我和Python的第一次亲密接触 | 课后测试题及答案(小甲鱼)
  20. 2019软科中国【计算机】专业大学排名

热门文章

  1. 从大到小输出a、b、c(选择结构)
  2. 设置子路由_多台路由器如何串联(级联)?
  3. python软件名字_python怎么获得文件夹名字
  4. python数据库去重复_python string 去重复数据库
  5. C语言小知识---数据类型
  6. 通过原码、反码、补码彻底搞清左移、右移、无符号右移
  7. DSB2017第一名代码尝试运行(记录自用)(三)
  8. 07_支持向量机2_统计学习方法
  9. 07_支持向量机1_统计学习方法
  10. Spring 中获取 request 的几种方法,及其线程安全性分析