文档章节

Android:SharedPreferences解析和实现记住用户名

岑浩源
 岑浩源
发布于 2012/11/28 14:25
字数 920
阅读 2838
收藏 7

SharedPreferences

    SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存。SharedPreferences不支持多线程。例如,可以通过它保存上一次用户所做的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置。

    另外的数据存储方式还有SQLite、Content Provider、File...

    用法:

        SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现的。

        存放:

        1.获得SharedPreferences 的实例对象,通过getSharedPreferences()传递存储时的名称和模式

        2.获得Editor 的实例对象,通过SharedPreferences 的实例对象的edit()

        3.存入数据用Editor的putXXX()  [存放什么数据就put那个数据的类型,支持Long、Int、String、Boolean]

        4.提交修改的数据用Editor的commit()

        读取:

        1.获得SharedPreferences 的实例对象,通过getSharedPreferences()传递存储时的名称和模式

        2.读取数据,通过SharedPreferences 的实例对象的getXXX()       [读取什么类型的数据就get那个类型]

         getSharedPreferences方法扩展

             getSharedPreferences("存储时的名称","模式")

             模式(可组合使用):        

                私有:       Context.MODE_PRIVATE                值0

                公开可读:Context.MODE_WORLD_READABLE    值1

                公开可写:Context.MODE_WORLD_WRITEABLE  值2

SharedPreferences sp = getSharedPreferences("mydata", Context.MODE_WORLD_WRITEABLE|Context.MODE_WORLD_WRITEABLE);

    1、数据共享

        2个activity 之间可以使用SharedPreferences来共享数据的方式

    A类

Editor sharedata = getSharedPreferences("data", 0).edit();
 sharedata.putString("item","hello getSharedPreferences");
 sharedata.commit();
    B类
SharedPreferences sharedata = getSharedPreferences("data", 0);
 String data = sharedata.getString("item", null);
 Log.v("cola","data="+data);

    2、保存修改

    这里用记住用户名为例子解说

    main.xml 布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
	<LinearLayout 
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:orientation="horizontal">
	    <TextView
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="用户名:" />
	    <EditText 
	        android:id="@+id/login_user_et"
	        android:layout_width="150dip"
	        android:layout_height="wrap_content"
	        android:digits="abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"/>
	</LinearLayout>
	<LinearLayout 
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:orientation="horizontal">
	    <TextView
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="密     码:" />
	    <EditText 
	        android:id="@+id/login_pswd_et"
	        android:layout_width="150dip"
	        android:layout_height="wrap_content"
	        android:password="true"/>
	</LinearLayout>
	<LinearLayout 
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:orientation="horizontal">
	    <TextView
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="记住密码:" />
	    <CheckBox
	        android:id="@+id/login_checkbox"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"/>
	</LinearLayout>
	<Button 
		android:id="@+id/login_btn"
		android:layout_width="200dip"
	    android:layout_height="wrap_content"
	    android:text="登陆"/>
</LinearLayout>
    java代码
public class DemoActivity extends Activity {
	
	public static final String PREFS_NAME = "prefsname"; //偏好设置名称
	public static final String REMEMBER_USERID_KEY = "remember"; //记住用户名
	public static final String USERID_KEY = "userid"; //用户名标记
	private static final String DEFAULT_USERNAME = "Hades"; //默认用户名
	
	//组件
	private EditText userName = null;
	private EditText passWord = null;
	private CheckBox cb = null;
	private SharedPreferences mSettings = null;
	private Button submitBtn = null;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        userName = (EditText) findViewById(R.id.login_user_et);
		passWord = (EditText) findViewById(R.id.login_pswd_et);
		cb = (CheckBox) findViewById(R.id.login_checkbox);
		submitBtn = (Button) findViewById(R.id.login_btn);
		mSettings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); //模式为私有
		cb.setChecked(getRemember()); //勾选记住用户名
		userName.setText(getUserName()); //设置用户名
		
		//保存用户名
		submitBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				//是否保存用户名
				if (cb.isChecked()) {
					saveRemember(true);
					saveUserName(userName.getText().toString());
				} else {
					saveRemember(false);
					saveUserName("");
				}
			}
		});
    }

	// 保存用户名
	private void saveUserName(String userid) {
		Editor editor = mSettings.edit();// 获取编辑器
		editor.putString(USERID_KEY, userid);
		editor.commit(); //保存数据
		//editor.clear();//清除数据
	}

	// 设置是否保存的用户名
	private void saveRemember(boolean remember) {
		Editor editor = mSettings.edit();// 获取编辑器
		editor.putBoolean(REMEMBER_USERID_KEY, remember);
		editor.commit();
	}
	// 获取保存的用户名
	private String getUserName() {
		return mSettings.getString(USERID_KEY, DEFAULT_USERNAME);
	}

	// 获取是否保存的用户名
	private boolean getRemember() {
		return mSettings.getBoolean(REMEMBER_USERID_KEY, true);
	}
}

   页面

    


下面分享熊猫82 的SQLite、Content Provider、File的博文:

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharedPreferences

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider


© 著作权归作者所有

岑浩源
粉丝 1
博文 3
码字总数 2300
作品 0
广州
程序员
私信 提问
Android开发_SharedPreferences

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangty0223/article/details/10700165 Android开发_SharedPreferences SharedPreferences是Android平台上一个...

张腾元_Ternence
2013/08/31
0
0
Android开发实例之登录界面的实现

Android开发实例之miniTwitter登录界面的实现:http://www.jizhuomi.com/android/example/134.html 小KING教你做android项目(二)---实现登陆页面并跳转和简单的注册页面:http://blog.csdn....

智能小松鼠
2015/11/08
0
0
Android数据存储方式之SharedPreferences

在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上, Android 为数据存储提供了如下几种方式: 1、文件 2、 SharedPreferences( 参数 ) 3、SQLite数据库 ...

鉴客
2011/11/14
10.7K
2
持久保存Activity的状态

Activity的持久化状态是用getPreferences(int)方法返回的SharedPreferences对象来管理的,这个对象允许使用跟Activity关联的name/value对来获取和编辑Activity私有的状态。这个方法内部只是简...

长平狐
2012/10/16
108
0
android之SharedPreferes

SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提...

晨曦之光
2012/05/16
147
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP程序员必看!进阶学习工作最全书籍指南作参考

【初阶】知识与入门 01. 《PHP与MySQL程序设计(第4版)》 http://item.jd.com/10701892.html 02. 《深入浅出MySQL 数据库开发 优化与管理维护 第2版》 http://item.jd.com/11381295.html 0...

ITCare
25分钟前
13
0
go监控方案(1) -- 概述

概述 为什么需要监控 在编写应用程序的时候,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析。 在很多时候,我们可能需要了解整个系统在当...

solate
25分钟前
3
0
华泰面试和优必选

优必选:1、根据题目写测试用例;2、写JAVA小程序(如数组排序,1-10的求和);3、LNIUx命令 华泰证券:1、根据题目写测试用例;2、用基本语法写一个PYthon程序;3、JMETER有哪些流程,...

颜丽
26分钟前
2
0
Spring Boot 配置多源的 RabbitMQ

简介 MQ 是开发中很平常的中间件,本文讲述的是怎么在一个Spring Boot项目中配置多源的RabbitMQ,这里不过多的讲解RabbitMQ的相关知识点。如果你也有遇到需要往多个RabbitMQ中发送消息的需求...

innerpeacez
27分钟前
1
0
破解版的「谷歌访问助手」

今天呢,我分享一个破解版的[谷歌访问插件];这款插件主有两个特点: 能够正常使用,绿色无广告,不会出现篡改主页等问题; 使用中比较稳定,性能较好; 下面介绍以插件的具体配置过程: 1,...

元歌
32分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部