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

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的更多相关文章

  1. 18.Android之SharedPreferences数据存储学习

    SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来 ...

  2. 学习Android之SharedPreferences使用

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

  3. Android学习总结——SharedPreferences

    SharePreferences存储方式,只是轻量级数据存储,xml格式的数据显示方式.简单存储步骤如下:一:获取SharePreferences对象1.SharedPreferences pref ...

  4. Android学习之SharedPreferences类

    SharedPreferences类 android.content.SharedPreferences 类概括: 访问和修改由函数getSharedPreferences(String,int)返回 ...

  5. Android学习笔记_8_使用SharedPreferences存储数据

    1.SharedPreferences介绍: Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用SharedPrefer ...

  6. Android学习(九) SharedPreferences

    一.SharedPreferences:一种清醒的存储方式,基于XML存储key-value键值对方式的数据. SharedPreferences对象本身只能获取数据,而不能存储和修改数据,存储修改只 ...

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

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

  8. Android 学习笔记之数据存储SharePreferenced+File

    学习内容: Android的数据存储.... 1.使用SharedPreferences来保存和读取数据... 2.使用File中的I/O来完成对数据的存储和读取...   一个应用程序,经常需要与用 ...

  9. android学习系列:jercy——AI3 的博客

    [android学习之十七]——特色功能2:桌面组件(快捷方式,实时文件夹) 二.桌面组件 1.快捷方式 Android手机上得快捷方式的意思可以以我们实际PC机器上程序的快捷方式来理解.而andro ...

随机推荐

  1. 【算法笔记】B1031 查验身份证

    1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...

  2. POJ - 1456 贪心 堆常用操作 注意细节

    题意:给定n个商品的deadline和profit,求每天卖一件的情况下的最大获利 显然是一道贪心 按deadline从小到大排序好,动态维护小根(profit)堆的大小<=当前deadline ...

  3. BZOJ 3224 Treap

    部分还没调到满意的程度,效率比splay略好 #include<bits/stdc++.h> using namespace std; const int maxn = 1e6+11; u ...

  4. 1137 Final Grading (25 分)

    For a student taking the online course "Data Structures" on China University MOOC (http:// ...

  5. [转] SpringBoot RESTful 应用中的异常处理小结

    [From] https://segmentfault.com/a/1190000006749441 SpringBoot RESTful 应用中的异常处理小结 永顺 2016年08月29日发布 赞  ...

  6. PIE SDK地图平移校正

    地图平移校正,当加载两幅空间参考一样的影像,其中一幅影像有点偏移,这时就以另一幅影像为基准将其进行平移校正,然后保存,再次加载就不会出现偏移了. 下面来介绍下实现的主要代码: 首先通过选中目录树中的要 ...

  7. 超级详细全截图化VMware 安装ubantu

    一,下载镜像 由于ubantu时国外源所以下载十分的缓慢 这里我用清华源下载:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/18.10/ub ...

  8. easyUI--datagrid 实现按键控制( enter tab 方向键 )

    1.表格定义时加上 onClickCell: onClickCell,2.定义列时加入编辑器3.引入 key.js 即可使用 enter 键 或者向下箭头 选中单元格下移 选中单元格上移 tab键 选 ...

  9. MVC参数自动装配

    在拿到一个类型的所有属性以及字段的描述信息后,就可以通过循环的方式,根据这些数据成员的名字去QueryString,Form,Session,Cookie读取所需的数据了. 就是遍历参数,然后用反射遍 ...

  10. Apache Beam的基本概念

    不多说,直接上干货! Apache Beam的基本概念 在使用Apache Beam构建数据处理程序,首先需要使用Beam SDK中的类创建一个Driver程序,在Driver程序中创建一个满足我们数 ...