在android中,数据的存储方式有许多种,每一种存储数据的方式都有自己所适用的场景。本文涉及的存储方式是:SharedPreferences参数。
SharedPreferences参数保存的数据主要是类似于配置信息格式的数据,所以它保存的数据主要是简单类型的key-value.
下面我们完成QQ登录界面“记住密码”这一功能的实现。上一篇文章中已经完整的讲解了QQ登录界面的设计。这里我们就直接完成功能的实现。
“记住密码”这一选项的功能就是用户在登录的时候选择了“记住密码”并点击登录按钮后,应用程序将用户的账号及密码存储起来,在程序退出后再进入时自动的在账号密码框中显示上次用户保存的数据。
首先我们先在 MainActivity.java中声明以下全局变量:
private EditText et_pwd;
private EditText et_qq;
private CheckBox cb_remember;
private SharedPreferences sp;
接下来在onCreate方法中初始化sp,getSharedPreferences中的第一个参数是存储时的名称,第二个参数是文件的打开方式,并通过findViewById查找到相关的控件:
sp = getSharedPreferences("config", 0);
et_qq = (EditText) findViewById(R.id.et_qq);
et_pwd = (EditText) findViewById(R.id.et_pwd);
cb_remember = (CheckBox) findViewById(R.id.cb_remember);
下一步便是写我们的“登录”按钮点击事件,点击事件共分四种,各有各的适用场合,这里我们用的是直接在布局文件中配置点击事件的方法:
public void login(View view){
}
首先我们在点击事件login类中声明两个变量用来获取文本输入框中的账号及密码:
String qq = et_qq.getText().toString().trim();
String pwd = et_pwd.getText().toString().trim();
接下来就是判断“记住密码”这一选项框用户是否勾选:
if(cb_remember.isChecked()){
}else{
}
如果用户勾选就保存用户输入的内容,没有就不保存,SharedPreferences接口本身没有提供写入数据的能力,而是通过它的内部接口,SharedPreferences调用edit()方法即可获取它的Editor对象,Editor有如下向SharedPreferences写入数据的方法:
Editor.clear() :清空SharedPreferences里所有数据。Editor.putXxx(String key, Xxx Value) :向SharedPreferences里存入指定key对应的数据。 Editor.remove(String key) :删除SharedPreferences里指定key对应的数据项。 boolean Editor.commit() :当Editor编辑完成后,调用该方法提交修改。
那么我们通过如下代码实现SharedPreferences数据的写入:
Editor editor = sp.edit();editor.putString("qq", qq);
editor.putString("pwd", pwd);editor.commit();
这样就实现了数据的存储,那接下来要做的就是数据的回显,用户退出后再打开可以看到上次保存的内容,我们可以通过SharedPreferences.getString()来实现读取保存的信息,可以写一个 readSavedData()方法,并在oncreate中调用:
private void readSavedData() {
String qq = sp.getString("qq", "");
String pwd = sp.getString("pwd", "");
et_qq.setText(qq);
et_pwd.setText(pwd);
}
至此,便完成了QQ“记住密码”这一功能的实现
我们可以到DDMS下看看模拟器中我们创建的文件:
小结
参数 sharedpreference
用来保存用户的配置信息和简单的数据
- 声明 SharedPreferences sp;
- 初始化 sp = this.getSharedPreferences("文件名", 0);//0代表的是私有
- 获取sp的编辑器 Editor editor = sp.edit();
- 存储数据 editer.putString() putBoolean putLong
- 最后一步重要,一定要记得commit() 数据才被保存