SharedPerferences 简单介绍

  • 用于保存简单的键值对数据;
  • 它将数据放在 /data/data/<package name>/shared_prefs目录下,用xml文件保存MAP键值对;

SharedPerferences 使用步骤

将数据存储到SharedPerferences中:

  1.先要得到SharedPerference对象:(三种方法)

      1).使用Context类中的 getSharedPreferences() 方法,它接收两个参数,第一个参数为文件名称,第二个参数为操作模式。

       操作模式MODE_PRAVITE :只有当前程序才能对这个文件进行读写。MODE_MULTI_PROCESS :多个进程中对同一个文件进行读写。

       如:

SharedPreferences spf = getSharedPreferences("data",Context.MODE_PRIVATE);

      2).使用Activity类中的 getPreferences() 方法,它只接收一个参数--操作模式,并且会将当前活动的类名作为文件名。

       如:

SharedPreferences spf = getPreferences(MODE_PRIVATE);

      3).使用PreferenceManager类中的 getDefaultSharedPreferences() 方法,它接收一个Context参数,并且用包名作为前缀来命名文件。

       如:

SharedPreferences spf = PreferenceManager.getDefaultSharedPreferences(this);

  2.再得到SharedPreferences.Editor对象:

      使用SharedPreferences对象的 edit() 方法。

SharedPreference.Editor editor = spf.edit();

  3.开始添加数据:

      以键值对的方式写入数据。

editor.putInt("age",22);
editor.putString("name","Visen");
editor.putBoolean("singleDog",false)

  4.提交操作:

editor.commit();

从SharedPerferences中读取数据:

  提供了一系列的get方法进行数据的读取。如:

String name = editor.getString("name"," ");

  如果键所对应的值不存在,则填入设定的默认值。

简单的保存密码功能

login.xml 登录布局页面

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:stretchColumns="1"> <LinearLayout
android:layout_height="wrap_content"
android:background="@color/black"
android:orientation="vertical"> <ImageView
android:layout_width="match_parent"
android:layout_height="240dp"
android:src="@drawable/image1"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/title"
android:textSize="40sp"
android:textColor="@color/red"
android:gravity="center"
android:background="@color/cyan"/>
</LinearLayout> <TableRow
android:layout_marginTop="30dp">
<TextView
android:layout_height="wrap_content"
android:text="@string/account"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/account"
android:layout_height="wrap_content"
android:inputType="text"
android:textSize="20sp"
android:textColor="@color/red"
android:gravity="center"
android:singleLine="true"/>
</TableRow> <TableRow>
<TextView
android:layout_height="wrap_content"
android:text="@string/password"
android:textSize="30sp"
android:textColor="@color/white"/>
<EditText
android:id="@+id/passWord"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:textSize="20sp"
android:textColor="@color/red"
android:gravity="center" />
</TableRow> <TableLayout
android:layout_height="wrap_content"
android:stretchColumns="0"> <TableRow>
<CheckBox
android:id="@+id/saveSelect"
android:background="@color/red"
android:layout_gravity="end"/>
<TextView
android:layout_height="wrap_content"
android:text="@string/saveSelect"
android:textSize="20sp"
android:textColor="@color/white"
android:gravity="center"
android:layout_gravity="bottom"/>
</TableRow> <TableRow>
<Button
android:layout_height="wrap_content"
android:id="@+id/login"
android:gravity="center"
android:layout_span="2"
android:text="@string/login"
android:textSize="25sp"
android:textColor="@color/red"
android:background="@drawable/black_bt"/>
</TableRow>
</TableLayout>
</TableLayout>

Login.java

public class Login extends AppCompatActivity {

    private SharedPreferences spf;
private SharedPreferences.Editor spfe; private int num = 0;
private EditText account = null;
private EditText passWord = null;
private CheckBox saveSelect = null;
private Button login = null ; @Override
protected void onCreate(Bundle saveInstanceState){ //加载布局
super.onCreate(saveInstanceState);
setContentView(R.layout.login); //初始化控件
account = (EditText)findViewById(R.id.account);
passWord = (EditText)findViewById(R.id.passWord);
saveSelect = (CheckBox)findViewById(R.id.saveSelect);
login = (Button)findViewById(R.id.login); //使用Context的getSharedPreferences(String name,int mode)方法得到SharedPreferences对象;
spf = getSharedPreferences("data", Context.MODE_PRIVATE);
//使用SharedPreferences对象的edit()方法得到 SharedPreferences.Editor 的对象;
spfe = spf.edit(); //复选框是否被选中,若为选中状态,则保存过账户,要恢复数据
if(spf.getBoolean("isSelect",false)){//选中标志,默认值为false
String acc = spf.getString("account","");
String pas = spf.getString("passWord","");
account.setText(acc);
passWord.setText(pas);
saveSelect.setChecked(true);
} //设置登录按钮监听事件
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//确认帐号密码
if(account.getText().toString().equals("visen") && passWord.getText().toString().equals("dsy402645063!")){ //复选框是否被勾选,若被勾选,则需要保存账户后登录;否则直接登录且不保存账户
if(saveSelect.isChecked()){
saveDate();
}else {
spfe.clear();
spfe.commit();
} //页面跳转
Intent intent = new Intent(Login.this,MainActivity.class);
startActivity(intent);
finish();
}else {//账户或密码错误
Toast.makeText(Login.this, "account or password is invalid", Toast.LENGTH_SHORT).show();
}
}
}); } public void saveDate(){ //读取EditText中的内容
String acc = account.getText().toString();
String pas = passWord.getText().toString();
//保存数据
spfe.putString("account",acc);
spfe.putString("passWord",pas);
spfe.putBoolean("isSelect",true);
//提交
spfe.commit();
} @Override
public void onBackPressed(){
num++;
if(num == 2){
super.onBackPressed();
}else{
Toast.makeText(Login.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
}
}
}

SharedPreferences实现记住密码功能的更多相关文章

  1. 通过sharedpreferences实现记住密码功能

    通过sharedpreferences实现记住密码功能

  2. android: SharedPreferences实现记住密码功能

    既然是实现记住密码的功能,那么我们就不需要从头去写了,因为在上一章中的最佳实 践部分已经编写过一个登录界面了,有可以重用的代码为什么不用呢?那就首先打开 BroadcastBestPractice 项 ...

  3. java实现记住密码功能(利用cookie)

    <br> <input type="text" id="userName" name="userName" value=& ...

  4. jquery.cookie.js 操作cookie实现记住密码功能的实现代码

    jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下.   复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...

  5. cookie记住密码功能

    很多门户网站都提供了记住密码功能,虽然现在的浏览器都已经提供了相应的记住密码功能 效果就是你每次进入登录页面后就不需要再进行用户名和密码的输入: 记住密码功能基本都是使用cookie来进行实现的,因此 ...

  6. Android数据存储-通过SharedPreferences实现记住密码的操作

    在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过S ...

  7. 【原创】js中利用cookie实现记住密码功能

    在登录界面添加记住密码功能,我首先想到的是在java后台中调用cookie存放账号密码,大致如下: HttpServletRequest request HttpServletResponse res ...

  8. vue项目实现记住密码功能

     一.谷歌浏览的残留问题 现在很多的网站都有一个需求是记住密码这个功能,为的是避免用户下次登录的时候繁琐的输入过程. 像是一些主流的浏览器(比如Chrome)都有了这个功能,而且如果你登录了Chrom ...

  9. js中记住密码功能

    js中记住密码功能(在前端实现) 直接上例子(如果你也要实现的话注意改一些变量名称,jsp代码不包含样式) Jsp代码: <form class="am-form tpl-form-l ...

随机推荐

  1. MyEclipse各种操作

    MyEclipse console没有显示的解决方法  1.进window菜单 ->show view->console    2.还是window菜单->preferences-& ...

  2. 消息推送之APNS

    利用APNS进行消息推送 原理 APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器. APNS推送可以分为三个阶段: 第一阶 ...

  3. 02-线性结构3 Pop Sequence

    Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and p ...

  4. [terry笔记]Oracle会话追踪(一):SQL_TRACE&EVENT 10046

      SQL_TRACE/10046 事件是 Oracle 提供的用于进行 SQL 跟踪的手段,在日常的数据库问题诊断和解决中是非常常用的方法.但其生成的trace文件需要tkprof工具生成一个可供人 ...

  5. 使用Moses中tokenizer.perl无法正常工作:纠结的"<" 和">"(已解决)

    发现居然没有输入文本和输出文本,折腾了一晚上,到了半夜终于搞懂了: 官方的Manual上这么写的: The tokenisation can be run as follows: ~/mosesdec ...

  6. ref和out的区别

    ref类型参数是按地址传递,能改变原来的数值.使用ref传参前,变量必须赋值. 带有ref类型参数的函数,不会清空变量,所以离开该函数的时候,所有ref引用的变量可以赋值也可以不赋值. out类型参数 ...

  7. DB2查询结果显示n行

    在SQLserver中语法是这样的:select top n * from staff ,即可查询显示n行数据 但是在DB2中语法是这样的,感觉比较接近英语. select * from STAFF ...

  8. android保存图片的方式

    Android中保存图片的两种方式 第一种是保存到数据库: 1.保存到数据库: 2.从数据库读取: 二是以图片格式保存到本地 1. A.声明tempFile以保存到指定路径: B.保存到tempFil ...

  9. Swift Tips - Array 类型

    在开发中,数组这个概念我们应该很熟悉了,Objective-C 中为我们提供了 NSArray 作为数组的实现.大家应该对很熟悉了.而在 Swift 中,为我们提供了它自己对于数组的实现,也是这里我们 ...

  10. GNU make 总结 (五)

    一.使用make更新静态库 静态库文件是一些.o文件的集合,在Linux中使用ar工具对它进行维护管理.一个静态库通常由多个.o文件组成,这些.o文件可独立的被作为一个规则的目标,库成员作为目标时需要 ...