在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点

下面,小编将带领大家通过SharedPreferences实现记住密码的操作

一、首先:介绍下什么是SharedPreferences?

SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置。

二、介绍了SharedPreferences,我们将通过记住SharedPreferences的案例讲述SharedPreferences

分析:当用户第一次登陆的时候,如果点击记住密码的操作,则将账户密码保存到xml中,如果没有点击,则不保存,或者保存空值到xml中(为了安全起见,建议进行数据存储的加密算法,常用的有MD5加密,Base64加密,小编在这不予讲述 --#)

案例:

这个案例实现的操作如上图

代码:如下图

package bzu.edu.cn.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
/**
* 这是一个用于记住密码的demo
* 知识点:SharedPreferences 存储的数据存储到xml文件中,读取的时候通过检测checkbox是否被选中,从而判断
* 是否需要从xml中进行密码的读取操作
*/
public class MainActivity extends Activity {
private EditText edt_user,edt_pass;
private CheckBox ck_save;
private Button btn_login;
private static final String PREFS_NAME="NamePWD";
private SharedPreferences sharedPreferences=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView(); // 初始化控件
setListener(); //设置监听事件
getData(); //第二次进入的时候得到数据
}
@Override
protected void onResume() {
super.onResume();
getData();
}
private void getData() {
sharedPreferences=getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
//判断之前是否存储过密码
if(sharedPreferences.getBoolean("isKeep",true)){
edt_user.setText(sharedPreferences.getString("user",""));
edt_pass.setText(sharedPreferences.getString("pass",""));
}else {
edt_user.setText("");
edt_pass.setText("");
}
}
private void setListener() {
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if("monster".equals(edt_user.getText().toString())&&"123".equals(edt_pass.getText().toString())){
if(ck_save.isChecked()){
//如果checkbook被选中
sharedPreferences=getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
SharedPreferences.Editor edit=sharedPreferences.edit();
edit.putBoolean("isKeep",true);
edit.putString("user",edt_user.getText().toString());
edit.putString("pass",edt_pass.getText().toString());
edit.commit();
}else {
sharedPreferences=getSharedPreferences(PREFS_NAME,MODE_PRIVATE);
SharedPreferences.Editor edit=sharedPreferences.edit();
edit.putBoolean("isKeep",false);
edit.putString("user","");
edit.putString("pass","");
edit.commit();
}
//跳转
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}else {
Toast.makeText(MainActivity.this,"账号或密码错误",Toast.LENGTH_SHORT).show();
}
}
});
}
private void initView() {
edt_user= (EditText) findViewById(R.id.edt_user);
edt_pass= (EditText) findViewById(R.id.edt_Pass);
ck_save= (CheckBox) findViewById(R.id.ck_save);
btn_login= (Button) findViewById(R.id.btn_login);
}
}

分析:首先声明SharedPreferences对象,然后调用edit()方法,每次使用完成后一定要commit()

----

源码托管:https://coding.net/u/monsterLin/p/SharedPreferences_Demo/git

最新文章

  1. Vim命令
  2. Entity Framework 程序设计入门二 对数据进行CRUD操作和查询
  3. JavaScript中原型和原型链
  4. WinFrom 只启动一个exe,并且获得焦点
  5. mmap DMA【转】
  6. URL学习笔记
  7. linux网络环境配置
  8. [poj 2553]The Bottom of a Graph[Tarjan强连通分量]
  9. github 分支 合并
  10. QT5: QApplication, no such file or directory
  11. OpenCV——ANN神经网络
  12. [iOS]C语言技术视频-05-程序循环结构(do{}while();)
  13. const vector<int> 和 vector<const int>问题讨论
  14. 基于.NET的APP开发和Windows开发,异步回调差别
  15. OneNote中添加代码问题
  16. memset memcmp memcpy memmove 自己实现
  17. ynoi2018
  18. Error while executing: am start -n
  19. C++ operator重载运算符和隐式转换功能的实现
  20. NFS介绍 NFS服务端安装配置 NFS配置选项

热门文章

  1. Struts2 框架的快速搭建
  2. python中from module import * 的一个陷阱
  3. hibernate Expression详解
  4. 采访ServiceStack的项目领导Demis Bellot——第1部分(网摘)
  5. 20160303 - 升级 Windows 10 版本 1511 后,文件夹默认打开方式为 cmd 的修复
  6. Intent和Intent Filters
  7. Beta项目冲刺 --第五天
  8. 转 -- linux IO子系统和文件系统读写流程
  9. 用Okhttp框架登录之后的Cookie设置到webView中(转)
  10. Dubbo系列(3)_官方Demo说明