使用SharedPreferences接口来实现记住密码功能
SharedPreferences接口非常适合用来存储零散的数据。这里我们用来实现记录用户名和密码的功能。在前面我用过IO流来实现记住密码的功能。那么用SharedPreferences接口会比用IO流更加方便,代码更加简洁。也更高效。
原理:SharedPreferences接口会在xxxx路径下生成xml文件。我们根据xml文件中的key和valu来使用所存储的值。
下面我们看看运行效果

然后是布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mylogin.MainActivity" > <EditText
android:id="@+id/et_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/tips" /> <EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/tips2"
android:inputType="textPassword" /> <RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" > <CheckBox
android:id="@+id/cb_remerber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="@string/tips3" /> <Button
android:id="@+id/bt_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:onClick="login"
android:text="@string/login" >
</Button>
</RelativeLayout> </LinearLayout>
字符串资源文件
<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="app_name">mylogin</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="tips">请输入用户名</string>
<string name="tips2">请输入用户密码</string>
<string name="tips3">记住密码</string>
<string name="login">登陆</string> </resources>
java文件
package com.example.mylogin2; import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast; @SuppressLint("CommitPrefEdits")
public class MainActivity extends Activity { private EditText userName, passWord;
private CheckBox box; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); userName = (EditText) findViewById(R.id.et_username);
passWord = (EditText) findViewById(R.id.et_password);
box = (CheckBox) findViewById(R.id.cb_remerber); load();
} // 点击登陆,写入账户密码的方法
@SuppressLint("ShowToast")
public void login(View v) {
String name = userName.getText().toString();
String pwd = passWord.getText().toString(); // 判断是否有勾选记住密码
if (box.isChecked()) {
/*
* getSharedPreferences(),第一个参数是生成info.xml文件,第二是是访问权限
* 生成路径/data/data/包名/share_perfs/info.xml
*/
//取得SharedPreferences对象
SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
// 取得编辑器
Editor et = sp.edit();
// 传入数据,参数的意思是 (key,value)看待会生成的info.xml就明白了
et.putString("NAME", name);
et.putString("PWD", pwd);
// 提交数据
et.commit();
Toast.makeText(this, "登陆成功", 0).show(); } else {
Toast.makeText(this, "登陆成功", 0).show();
}
} // 加载账户密码的方法
public void load() {
//取得SharedPreferences对象
SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
/*
* getString,参数意义表示用key=第一个参数去取值,如果取不到值,就返回第二个参数
* 因为有了第二个参数,所以我们也不需要判断是否存在info文件
* */
String nameString = sp.getString("NAME", "");
String pwdString = sp.getString("PWD", ""); userName.setText(nameString);
passWord.setText(pwdString);
} }
使用SharedPreferences接口来实现记住密码功能的更多相关文章
- 通过sharedpreferences实现记住密码功能
通过sharedpreferences实现记住密码功能
- android: SharedPreferences实现记住密码功能
既然是实现记住密码的功能,那么我们就不需要从头去写了,因为在上一章中的最佳实 践部分已经编写过一个登录界面了,有可以重用的代码为什么不用呢?那就首先打开 BroadcastBestPractice 项 ...
- java实现记住密码功能(利用cookie)
<br> <input type="text" id="userName" name="userName" value=& ...
- jquery.cookie.js 操作cookie实现记住密码功能的实现代码
jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下. 复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...
- cookie记住密码功能
很多门户网站都提供了记住密码功能,虽然现在的浏览器都已经提供了相应的记住密码功能 效果就是你每次进入登录页面后就不需要再进行用户名和密码的输入: 记住密码功能基本都是使用cookie来进行实现的,因此 ...
- 【原创】js中利用cookie实现记住密码功能
在登录界面添加记住密码功能,我首先想到的是在java后台中调用cookie存放账号密码,大致如下: HttpServletRequest request HttpServletResponse res ...
- vue项目实现记住密码功能
一.谷歌浏览的残留问题 现在很多的网站都有一个需求是记住密码这个功能,为的是避免用户下次登录的时候繁琐的输入过程. 像是一些主流的浏览器(比如Chrome)都有了这个功能,而且如果你登录了Chrom ...
- js中记住密码功能
js中记住密码功能(在前端实现) 直接上例子(如果你也要实现的话注意改一些变量名称,jsp代码不包含样式) Jsp代码: <form class="am-form tpl-form-l ...
- js中利用cookie实现记住密码功能
在登录界面添加记住密码功能,代码如下: //设置cookie var passKey = '4c05c54d952b11e691d76c0b843ea7f9'; function setCookie( ...
随机推荐
- 多线程下使用Jedis
在不同的线程中使用相同的Jedis实例会发生奇怪的错误. 但是创建太多的实现也不好因为这意味着会建立很多sokcet连接,也会导致奇怪的错误发生. 单一Jedis实例不是线程安全的. 为了避免这些问题 ...
- Splash设置
平常这个东西是自动充满屏幕的,今天一下子居中只显示1/4了.原来不小心改动了这里 splash scaling属性,改回这个就没问题了
- MySQL索引分析
索引的出现解决数据量上升导致查询越来越慢的问题,优化数据的查询,提高查询的速度. 索引 定义: 通过各种数据结构实现的值到行位置的映射.快速定位与访问特定的数据. 作用: 提高访问速度 实现主键.唯一 ...
- 特殊字符处理(WPF)
WPF XAML 特殊字符(小于号.大于号.引号.&符号) - Andrew.Wangxu 时间 2013-09-07 18:14:00 博客园-所有随笔区原文 http://www.cn ...
- asp.mvc 基本知识
(1)@Html.DisplayNameFor(model => model.Title)是显示列名, (2)@Html.DisplayFor(modelItem => item.Titl ...
- 关于const_cast转换
第一次看到const_cast转换,将const指针转换成普通的指针.很自然的想到:什么时候用const_cast?为什么要用它?这根const不是相互矛盾吗? (const_cast<ICef ...
- Mysql进程管理
mysql> show processlist;+----+------+-----------+------+---------+------+-------+---------------- ...
- New Concept English three (50)
31 39 The New Year is a time for resolutions. Mentally, at least, most of us could compile formidabl ...
- python中读写LMDB数据库
LMDB的全称是Lightning Memory-Mapped Database(快如闪电的内存映射数据库),它的文件结构简单,包含一个数据文件和一个锁文件: LMDB文件可以同时由多个进程打开,具有 ...
- Js中获取键盘的事件
使用方法: <script type="text/javascript" language=JavaScript charset="UTF-8"> ...