不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的,存储的数据是一个字符串,读取出来的数据仍然是字符串。

要想使用SharedPreferences来存储数据, 首先需要获取到SharedPreferences对象。 Android中主要提供了三种方法用于得到SharedPreferences对象。
1. Context 类中的 getSharedPreferences()方法
此方法接收两个参数,第一个参数用于指定 SharedPreferences文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences 文件都是存放在/data/data/<packagename>/shared_prefs/目录下的。第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATE和 MODE_MULTI_PROCESS。MODE_PRIVATE仍然是默认的操作模式,和直接传入 0 效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。 MODE_MULTI_PROCESS则一般是用于会有多个进程中对同一个 SharedPreferences文件进行读写的情况。类似地,MODE_WORLD_READABLE
和 MODE_WORLD_WRITEABLE 这两种模式已在 Android 4.2版本中被废弃。
2. Activity类中的 getPreferences()方法
这个方法和 Context 中的 getSharedPreferences()方法很相似,不过它只接收一个操
作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharedPreferences的文
件名。
3. PreferenceManager类中的 getDefaultSharedPreferences()方法
这是一个静态方法,它接收一个 Context 参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences文件。
得到了 SharedPreferences对象之后, 就可以开始向 SharedPreferences文件中存储数据了,主要可以分为三步实现。
1. 调用 SharedPreferences对象的 edit()方法来获取一个 SharedPreferences.Editor对象。
2. 向 SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用putBoolean方法,添加一个字符串则使用 putString()方法,以此类推。
3. 调用 commit()方法将添加的数据提交,从而完成数据存储操作。

下边就开始贴代码吧:

xml代码:

<span style="font-size:14px;"><TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="1" ><TableRow><TextViewandroid:layout_height="wrap_content"android:text="Account:" /><EditTextandroid:id="@+id/account"android:layout_height="wrap_content"android:hint="Input your account" /></TableRow><TableRow><TextViewandroid:layout_height="wrap_content"android:text="Password:" /><EditTextandroid:id="@+id/password"android:layout_height="wrap_content"android:inputType="textPassword" /></TableRow><LinearLayout>   <CheckBox android:id="@+id/remember_pass"android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="Remember Password"/></LinearLayout><TableRow><Buttonandroid:id="@+id/login"android:layout_height="wrap_content"android:layout_span="2"android:text="Login" /></TableRow></TableLayout></span>

java代码:

<span style="font-size:14px;">package com.example.broadcastbestpractice;import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends Activity {private SharedPreferences pref;             //SharedPreferences是使用键值对来存储数据的private SharedPreferences.Editor editor;private EditText accountEdit;            //用户名private EditText passwordEdit;         //密码private Button login;                   //登录按钮private CheckBox rememberPass;            //checkbox 用来判断是否记录密码@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);pref = PreferenceManager.getDefaultSharedPreferences(this);accountEdit = (EditText) findViewById(R.id.account);passwordEdit = (EditText) findViewById(R.id.password);rememberPass = (CheckBox) findViewById(R.id.remember_pass);           //checkboxlogin = (Button) findViewById(R.id.login);//     key            获取的preference的名称
//      defValue 当此preference不存在时返回的默认值
//      如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个boolean类型,则抛出ClassCastException。
//      异常:ClassCastException        boolean isRemember = pref.getBoolean("remember_password", false);        //如果不存在则返回falseif (isRemember) {//将帐号和密码都设置到文本框中String account = pref.getString("account", "");String password = pref.getString("password", "");accountEdit.setText(account);passwordEdit.setText(password);rememberPass.setChecked(true);}login.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString account = accountEdit.getText().toString();String password = passwordEdit.getText().toString();if (account.equals("admin") && password.equals("1234")) {editor = pref.edit();               //把SharedPreferences保存的值赋出来if (rememberPass.isChecked()) {editor.putBoolean("remember_password", true);editor.putString("account", account);editor.putString("password", password);}else{editor.clear();}editor.commit();Intent intent = new Intent(MainActivity.this, FirstActivity.class);<span> </span>//调用另一个活动startActivity(intent);finish();}else{Toast.makeText(MainActivity.this, "account or password is invalid.", Toast.LENGTH_LONG).show();}}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
</span>

到这里就基本OK了。。。

具体SharedPreferences类的使用方法贴了几个网上查找的连接:

http://blog.csdn.net/xiaanming/article/details/9339515

http://blog.csdn.net/bear_huangzhen/article/details/46551433

刚自学android不久,有补足之初请指正。。。谢谢

Android自学之SharedPreferences存储实现记录密码功能相关推荐

  1. android中注册的账号密码储存在,Android中使用SharedPreferences完成记住账号密码的功能...

    效果图: 记住密码后,再次登录就会出现账号密码,否则没有. 分析: SharedPreferences可将数据存储到本地的配置文件中 SharedPreferences会记录CheckBox的状态,如 ...

  2. android wear支付宝6,Android自定义View仿支付宝输入六位密码功能

    跟选择银行卡界面类似,也是用一个PopupWindow,不过输入密码界面是一个自定义view,当输入六位密码完成后用回调在Activity中获取到输入的密码并以Toast显示密码.效果图如下: 自定义 ...

  3. 用 SharedPreferences 存储进行记住密码 和保存用户名(记住密码)

    1.什么是SharedPreferences 存储? SharedPreferences是Android平台上一个轻量级的存储类,用来存储少量数据时简单,便捷(保存记住密码状态,设置开关状态等). 以 ...

  4. 手机内存卡转化linux,Android 往手机内存卡上存储用户名与密码的操作

    当大家 用Android 应用 操作时,会发现有很多应用要登陆名和密码,而且,它们都能记住密码,当你退出 ,再次登陆时,你们帐号密码会自动添加上去. 例: 布局文件 相信都能做出来 就不一一介绍 了. ...

  5. [网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记

    补充学习资料: TK13大神Windows PE专栏 https://blog.csdn.net/u013761036/article/category/6401236 TK13大神Windows对抗 ...

  6. Android应用开发SharedPreferences存储数据的使用方法

    SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来 ...

  7. android初学之sharedpreferences存储

    2019独角兽企业重金招聘Python工程师标准>>> 在android中可以当做偏好设置来使用:当存储的数据提交后,会以xml文件的形式存在于工程中的 /data/data/包名/ ...

  8. android中的SharedPreferences存储

    1.activity_shared_perference.xml <?xml version="1.0" encoding="utf-8"?> &l ...

  9. android 登录保存密码,android 如何实现登陆界面的记住密码功能

    今天 写了一个有关登录记住密码的列子 其实这个例子的关键使用到了AutoCompleteTextView 以及sharedPreference的两个关键知识点,大家知道 AutoCompleteTex ...

最新文章

  1. 10行代码爬取全国所有A股/港股/新三板上市公司信息
  2. 英伟达一大波硬件来袭:今日GTC发布专业GPU与DPU,为收购ARM将在英国建超算
  3. css盒子模型、文档流、相对与绝对定位、浮动与清除模型
  4. RPA女子计划—面向日本女性的工作方式改革
  5. hiveql笔记(一)
  6. 句法分析(syntactic parsing)在NLP领域的应用是怎样的
  7. C语言 define 防止头文件重复包含 - C语言零基础入门教程
  8. 大家为什么不喜欢到实体店?
  9. java 新项目计划_项目计划 - KerryJava - 博客园
  10. java技术分享ppt_精美PPT制作培训 | 技术二部内部分享
  11. 平面设计计算机基本配置,2017平面设计使用的电脑配置
  12. 正则表达式(模拟网络爬虫、网络蜘蛛)
  13. 百度云网盘高速通道加速破解版 去广告纯净版干净云
  14. 今日头条php笔试题,2017年今日头条笔试题目
  15. linux7 镜像文件,{红帽 RHCE}RHEL7使用ISO镜像文件构筑本地YUM
  16. android集成建行龙支付,龙支付及建行信用卡分期支付SDK
  17. c++ template aliases
  18. 秘制牛肉Alpha阶段项目展示
  19. python之禅中文-python之禅怎么打出来
  20. RabbitVCS:ubuntu下svn可视化工具的安装和使用

热门文章

  1. 机器狗写入到userinit.exe文件的下载者源码(c及汇编)
  2. 深入掌握数组定义与初始化
  3. 情侣私密社交应用小恩爱 PK Pair: 小恩爱相比略胜 但仍待完善
  4. jq控制一个按钮触发单击效果
  5. html5无组件上传,ASP上传漏洞 无组件上传图片文件(转载)
  6. 从零开始之驱动发开、linux驱动(四十七、linux下的IIC框架【1】)
  7. 安装3dmax 2013 打开提示 FTL:Virtual device creation failed 解决办法
  8. 谈谈目前网络工程师的待遇问题
  9. 老电脑怎么重装系统win10
  10. QQ 表情存在“恶意彩蛋”?腾讯回应是 Bug