上两节我们都是使用文本文件保存用户的信息,这明显是存在漏洞的。同时对文件中的内容不好管理。今天我们学习用SharedPreference保存。sharedPreference是专门保存一些比较零散的数据的。
我们还是用上节的例子分析,将用户的信息使用SharedPreference来保存。
注意:如果不知道是什么例子,请看Android 存储学习之在内部存储中读写文件
当点击确定按钮后,就会保存用户的信息:
代码语言:javascript复制public void login(View v)
{
String name = ed_nam.getText().toString();
String passwd = ed_passwd.getText().toString();
//判断用户名或者密码是否输入
if((name.equals("")) || (passwd.equals("")))
{
Toast.makeText(this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
}
else
{
if(cb.isChecked())
{
//使用sharedPreference来保存用户的信息,
//SharedPreference的默认路径是:当前进程包名下的/share_prefs/
SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
//拿到SharedPreference的编辑器
Editor editor = sp.edit();
editor.putString("name", name);
editor.putString("passwd", passwd);
//提交
editor.commit();
}
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
}
}
可以看到在sharedPreference的路径下有info文件
导出可以看到。info.xml是以key,value的形式保存的
代码语言:javascript复制<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="passwd">1233333</string>
<string name="name">ert</string>
</map>
当再次进来时,也能回显用户的信息:
代码语言:javascript复制 public void readInfo()
{
//获取info文件中的内容
SharedPreferences sP = getSharedPreferences("info", MODE_PRIVATE);
ed_nam.setText(sP.getString("name", ""));
ed_passwd.setText(sP.getString("passwd", ""));
}
显示效果: