接下来的几个博文,来介绍安卓中的数据存储方式,安卓中的数据存储主要有四种方式:
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); } } } } });