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 ...
 
随机推荐
- C++_类入门1-对象和类的介绍
			
面向对象是(OOP)是特殊的.设计程序的概念性方法:包含以下特性: 抽象: 封装和数据隐藏: 多态: 继承: 代码的可重用性: 为了实现这些特性并且将这些特性组合在一起,C++所做的最重要的改进是提供 ...
 - P3332 [ZJOI2013]K大数查询
			
传送门 注意操作 $1$ 是在区间的每个位置加入一个数,不是加上一个值 相当于每个位置维护的是一个集合 显然树套树 一开始想的是区间线段树套权值线段树 发现这样询问区间第 $K$ 大时就要先二分答案再 ...
 - 安卓app上传到应用宝、360手机助手、小米应用商店、百度手机助手/安卓市场/91助手
			
1.小米应用商店 小米开放平台网站:https://account.xiaomi.com 注册帐号教程地址:http://dev.xiaomi.com/doc/?p=90 应用提交流程:http:// ...
 - Phyton Flask框架学习记录。
			
注意:在左侧菜单栏(在JQuery插件库下载的)右边是采用<iframe> 标签嵌入其他页面,此时标签的src应用用后台中的方法名称(本人测试用的是无参数的方法), 而页面跳转window ...
 - 论文阅读 | STDN: Scale-Transferrable Object Detection
			
论文地址:http://openaccess.thecvf.com/content_cvpr_2018/papers/Zhou_Scale-Transferrable_Object_Detection ...
 - groovy——运行方式、基本语法、引入方式、metaClass
			
jvm运行groovy类有两种方式: 1.使用groovyc编译所有的*.groovy为java的*.class文件,把这些*.class文件放在java类路径中,通过java类加载器来加载这些类. ...
 - RedisClient 连接redis 提示 ERR Client sent AUTH, but no password is set
 - 2019.03.26 读书笔记  关于 invoke与begininvoke
			
invoke与begininvoke是同步委托和异步委托,但是有两种使用情况: 1. control中的invoke.begininvoke. 2. delegrate中的invoke.beginin ...
 - linux 基础运维 之 Linux的闹钟
			
1. linux 删除一个文件的权限要看文件所在的目录的权限 删除文件需要对对这个目录拥有w权限 修改文件 查看文件的内容需要对文件有rw权限 删除 创建一个文件 需要对文件坐在地目录拥有wx权限2. ...
 - http状态代码含义收藏
			
状态代码(也称作错误代码),指为服务器所接收每个请求(网页点击)分配的 3 位数代码.多数有效网页点击都有状态代码 200("正常")."网页未找到"错误会生产 ...