博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习——SharedPreferences
阅读量:5157 次
发布时间:2019-06-13

本文共 3961 字,大约阅读时间需要 13 分钟。

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

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);                        }                    }                }            }        });

 

界面展示


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

你可能感兴趣的文章
Java基础知识强化48:Java中哈希码
查看>>
TCP/IP协议原理与应用笔记24:网际协议(IP)之 IP协议的简介
查看>>
bool
查看>>
C#中Enum用法小结
查看>>
ORA-12541:TNS:无监听程序
查看>>
QMap与QHash
查看>>
Cocos2d-x动作学习笔记 分类: cocos2d代码编写 ...
查看>>
第4章例4-12 源程序2
查看>>
Bootstrap 3 How-To #1 下载与配置
查看>>
java并发编程(10)Fork/Join
查看>>
#程序员健康 如何解救你的鼠标手
查看>>
linux下maven的安装
查看>>
win10安装express遇到的问题。
查看>>
Corosync 配置描述
查看>>
JAVA中类、实例与Class对象
查看>>
svn_linux + apache 实现网页访问svn
查看>>
leetcode 58. length of last word
查看>>
C++随笔(2)
查看>>
周浩晖 - 鬼望坡(2014年11月25日)
查看>>
servlet+jdbc+fckeditor网络留言板
查看>>