- 浏览: 290825 次
- 性别:
- 来自: 青岛
文章分类
最新评论
-
totot:
打扰大师了,acquireWakeLock(),releas ...
使用WakeLock使Android应用程序保持后台唤醒 -
totot:
打扰大师了,acquireWakeLock(),releas ...
使用WakeLock使Android应用程序保持后台唤醒 -
aaa6287152:
感谢楼主 问题解决 一开始按照第一条修改了,结果看第二条没有修 ...
The method of type must override a superclass method解决方式 -
Mark_dev:
chen646531623 写道达哥,很不幸,我出现了你所说的 ...
Unable to resolve host "...": No address associated 错误 解决方案 -
Mark_dev:
我也遇到楼上的那个问题。
Unable to resolve host "...": No address associated 错误 解决方案
SharedPreferences是Android中存储简单数据的一个工具类。可以想象它是一个小小的Cookie,它通过用键值对的 方式把简单数据类型(boolean、int、float、long和String)存储在应用程序的私有目录下(data/data/包名 /shared_prefs/)自己定义的xml文件中。
一、简介
它提供一种轻量级的数据存储方式,通过eidt()方法来修改里面的内容,通过Commit()方法来提交修改后的内容。
二、重要方法
public abstract boolean contains (String key) :检查是否已存在该文件,其中key是xml的文件名。
edit ():为preferences创建一个编辑器Editor,通过创建的Editor可以修改preferences里面的数据,但必须执行commit()方法。
getAll ():返回preferences里面的多有数据。
getBoolean (String key, boolean defValue):获取Boolean型数据
getFloat (String key, float defValue):获取Float型数据
getInt (String key, int defValue):获取Int型数据
getLong (String key, long defValue):获取Long型数据
getString (String key, String defValue):获取String型数据
registerOnSharedPreferenceChangeListener (SharedPreferences.OnSharedPreferenceChangeListener listener):注册一个当 preference发生改变时被调用的回调函数。
unregisterOnSharedPreferenceChangeListener (SharedPreferences.OnSharedPreferenceChangeListener listener):删除当前回调函数。
三、重要接口SharedPreferences.Editor
1.简介
用于修改SharedPreferences对象的内容,所有更改都是在编辑器所做的批处理,而不是复制回原来的SharedPreferences或持久化存储,直到你调用commit(),才将持久化存储。
2.重要方法
clear ():清除内容。
commit ():提交修改
remove (String key):删除preference
下面通过“记住密码”功能
四、实例
效果图如下
首页
登录成功后的页面
当第一次登录点击”记住密码“后,第二次打开时的页面
2.代码
布局文件 login.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:gravity="right" android:layout_gravity="right"
android:background="@drawable/default_bg" android:orientation="vertical">
<TableLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:stretchColumns="1">
<TableRow android:gravity="center" android:layout_gravity="center">
<ImageView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/ivlogo"
>
</ImageView>
</TableRow>
</TableLayout>
<TableLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:stretchColumns="1">
<TableRow android:layout_marginTop="100dip">
<TextView android:layout_width="wrap_content"
android:layout_marginLeft="20dip" android:gravity="center_vertical"
android:layout_height="wrap_content" android:id="@+id/tvaccount"
android:text="帐号:" android:textSize="20sp">
</TextView>
<EditText android:layout_width="70px" android:layout_height="wrap_content"
android:id="@+id/etaccount" android:layout_marginRight="20dip"
android:maxLength="20"></EditText>
</TableRow>
<TableRow android:layout_marginTop="10dip">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/tvpw"
android:layout_marginLeft="20dip" android:gravity="center_vertical"
android:text="密码:" android:textSize="20sp">
</TextView>
<EditText android:layout_width="70px" android:layout_height="wrap_content"
android:layout_marginRight="20dip" android:id="@+id/etpw"
android:inputType="textPassword"></EditText>
</TableRow>
</TableLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:layout_marginTop="5dip" android:layout_marginRight="20dip">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/tvclear"
android:text="清除Cookies" android:textColor="#aa0000" android:textSize="12px"></TextView>
</LinearLayout>
<TableLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_marginTop="20dip">
<TableRow android:gravity="center" android:layout_width="fill_parent">
<Button android:layout_width="100px" android:layout_height="wrap_content"
android:id="@+id/btnlogin" android:layout_gravity="center"
android:text="登录"></Button>
<Button android:layout_width="100px" android:layout_height="wrap_content"
android:id="@+id/btnexit" android:layout_gravity="center"
android:text="退出"></Button>
</TableRow>
</TableLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:layout_marginTop="25dip">
<CheckBox android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/cbrp"
android:text="记住密码" android:textSize="12px"></CheckBox>
<CheckBox android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/cbal"
android:text="自动登录" android:textSize="12px"></CheckBox>
</LinearLayout>
</LinearLayout>
java代码
package com.wjq;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.wjq.beans.User;
import com.wjq.func.UserMgr;
public class Login extends Activity {
private EditText etAccount;
private EditText etPW;
private Button btnLogin;
private Button btnExit;
private CheckBox cbrp;
private CheckBox cbal;
private UserMgr userMgr;
private User user;
private SharedPreferences sp;
private TextView tvClear;
/*
* (non-Javadoc)
*
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
etAccount = (EditText) findViewById(R.id.etaccount);
etPW = (EditText) findViewById(R.id.etpw);
cbrp = (CheckBox) findViewById(R.id.cbrp);
cbal = (CheckBox) findViewById(R.id.cbal);
btnLogin = (Button) findViewById(R.id.btnlogin);
btnExit = (Button) findViewById(R.id.btnexit);
tvClear=(TextView)findViewById(R.id.tvclear);
InitConfig();
cbrp
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
sp = getSharedPreferences("UserInfo", 0);
sp.edit().putBoolean("cbrp", isChecked).commit();
}
});
cbal
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
sp = getSharedPreferences("UserInfo", 0);
sp.edit().putBoolean("cbal", isChecked).commit();
}
});
btnLogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
user = new User(etAccount.getText().toString(), etPW.getText()
.toString());
Log.i("tag", "Account:" + etAccount.getText().toString());
Log.i("tag", "Password:" + etPW.getText().toString());
userMgr = new UserMgr();
Boolean flag = userMgr.CheckUser(user, Login.this);
if (!flag) {
Toast.makeText(Login.this, "用户验证错误!", 1000).show();
}
else {
if (cbrp.isChecked()) {
sp = getSharedPreferences("UserInfo",
Context.MODE_WORLD_WRITEABLE
| Context.MODE_WORLD_READABLE);
sp.edit().putString("account",
etAccount.getText().toString()).commit();
sp.edit().putString("password",
etPW.getText().toString()).commit();
}
}
}
});
btnExit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.exit(0);
}
});
tvClear.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {sp=getSharedPreferences("UserInfo", 0);
sp.edit().clear().commit();
}});
}
//初始化配置
private void InitConfig() {
sp = getSharedPreferences("UserInfo", 0);
etAccount.setText(sp.getString("account", null));
etPW.setText(sp.getString("password", null));
cbal.setChecked(sp.getBoolean("cbal", false));
cbrp.setChecked(sp.getBoolean("cbrp", false));
}
}
说明 :
1.写内容
sp = getSharedPreferences("UserInfo", 0);
sp.edit().putBoolean("cbal", isChecked).commit();
UserInfo是指xml文件的文件名,如果此文件已存在则直接向其中写内容“isChecked”的值,首先通过SharedPreferences的edit()方法创建editor,然后调用commit()方法提修改
2.读内容
sp = getSharedPreferences("UserInfo", 0);
etAccount.setText(sp.getString("account", null));
etPW.setText(sp.getString("password", null));
cbal.setChecked(sp.getBoolean("cbal", false));
cbrp.setChecked(sp.getBoolean("cbrp", false));
- RememberNameAndPassword.rar (69.9 KB)
- 下载次数: 30
发表评论
-
ASimpleCache 一个为android制定的 轻量级的 开源缓存框架。
2014-04-10 11:04 1724ASimpleCache 是一个为android制定的 轻量 ... -
android 中 EditText加入图标 更改边框颜色 设置透明 代码
2013-07-19 10:20 4057main.xml [java] view pl ... -
TortoiseGit安装教程
2013-07-17 11:40 2023TortoiseGit 是Windows下的可视化Git界面 ... -
使用WakeLock使Android应用程序保持后台唤醒
2013-07-17 11:02 3033在使用一些产品列如 ... -
Android AlarmManager实现不间断轮询服务
2013-07-17 10:48 2967在消息的获取上是选择轮询还 是推送得根据实际的业务需要来技 ... -
二维码、条形码扫描——使用Google ZXing
2013-07-17 10:20 3630我在项目中用到了二维码扫描的技术,用的是Google提供的Z ... -
android 基于基站,apn,gps,wifi,network 根据不同手机sim卡获取经纬度
2013-05-20 15:08 2327一:新建MyLocation类,本类主要管理使用各种获取经 ... -
android 基于百度地图api开发定位以及获取详细地址
2013-05-20 15:02 2883一:百度地图开发必须要到百度开发平台android开发api ... -
android google地图定位开发,且可以自由移动位置重新获取定位,地址信息
2013-05-20 15:00 2696一:申请key: 1.首先找到debug keyst ... -
Android UI库及组件推荐
2013-03-28 10:40 1880一、UI组件库 1. GreenDroid ... -
Android 启动模拟器是出现“Failed to allocate memory: 8”错误提示的原因及解决办法
2012-11-13 10:00 1822关键词:Android、模拟器、无法启动 某天,Andr ... -
关于Eclpse升级到ADT-20,xml布局文件不能正常显示问题
2012-10-29 17:39 17211.首先要把自己的eclipse中的adt升级到最新的版本(目 ... -
Android开发错误汇总
2012-10-29 17:38 3641大家都在为项目开发成功而喜悦,但可不知成功的路上是会经常出错的 ... -
The method of type must override a superclass method解决方式
2012-09-21 10:18 2268标签:override ActionSupport ... -
[程序猿感悟] Android平台开发中的重构三步走
2012-09-13 16:26 2051我们都知道,技术是优 ... -
Android Layout XML属性
2012-08-16 11:29 1236Layout对于迅速的搭建界面和提高界面在不同分辨率的屏幕 ... -
Eclipse快捷键大全
2012-08-02 09:50 1127Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ct ... -
Android中asset文件夹和raw文件夹区别
2012-07-26 16:58 2007*res/raw和assets的相同点 ... -
分享45个android实例源码,很好很强大.大家赶快来收藏吧!!
2012-07-26 15:55 1124http://www.eoeandroid.com/threa ... -
Intent调用大全,史上最全的
2012-07-26 12:11 1066//调用浏览器 Uri uri = Uri.parse(&q ...
相关推荐
SharedPreferences是Android提供的一个轻量级存储类,经常用于保存软件设置参数。存放的格式为xml,文件存放在 /data/data/<package name>/shared_prefs下。
在Android应用开发中,"SharedPreferences记住用户名密码"是一个常见的功能,它允许用户在登录一次之后,再次打开应用时无需重新输入用户名和密码。这个功能提高了用户体验,减少了用户的操作步骤。下面我们将深入...
最近Android项目需要一个自动登录功能,完成之后,特总结一下,此功能依靠SharedPreferences进行实现。 SharedPreferences简介 ...SharedPreferences使用实例:记住用户名密码自动登录 大致了解了SharedPre
综上所述,实现“记住用户名和密码”的功能主要涉及SharedPreferences的使用,包括数据的保存和读取。同时,UI设计的细节,如shape和图片选择,也对用户体验有着重要影响。在实际开发中,要确保界面的一致性,提供...
综上所述,实现Android记住用户名和密码的功能涉及SharedPreferences的使用、UI布局的设计、事件监听、数据的读写以及安全和权限的管理等多个方面。通过学习和实践这些知识点,开发者可以为用户提供更加便捷和安全的...
在Android中,有多种方式可以保存用户的数据,如SharedPreferences、SQLite数据库、文件存储或使用Android提供的AccountManager。在这个实例中,我们最常用且简单的方式是SharedPreferences。 **1. ...
可以使用SharedPreferences.Editor来存储数据,并使用SharedPreferences来检索数据。 3. 在登录按钮的点击事件中,使用SharedPreferences来检索用户名和密码,并自动填充到EditText控件中。 4. 如果用户选择记住...
总之,实现Android程序记住用户名和密码自动登录的关键在于合理利用SharedPreferences存储数据,并结合自动登录逻辑以及必要的安全性措施。同时,开发者应该关注用户体验,提供可选的自动登录功能,并确保数据安全。
在Android中,我们通常在Activity或Fragment中使用SharedPreferences。首先,我们需要获取到SharedPreferences实例。这可以通过以下代码实现: ```java SharedPreferences sharedPreferences = ...
通过以上步骤,我们就成功地实现了Android应用中使用SharedPreferences记住账号密码的功能。注意,虽然SharedPreferences提供了方便的本地数据存储,但它并不适合存储大量或敏感数据,因为它的数据是明文存储的,...
通过使用 SharedPreferences,可以实现记住用户名和密码,并且在下次登录时自动填充用户名和密码,从而提高用户体验。 在 Android 中,SharedPreferences 是一种轻量级的存储机制,可以存储少量的数据。通过使用 ...
在Android开发中,SharedPreferences是用于存储轻量级数据的一个关键组件,它主要用于保存用户的偏好设置,例如在登录界面中记住用户名和密码的功能。下面我们将详细讲解如何使用SharedPreferences来实现这个功能。 ...
在Android应用开发中,实现...以上就是Android实现记住用户名和密码功能的完整流程,包括界面设计、事件监听、数据存储与加载,以及异常处理。通过这些步骤,用户可以选择记住他们的登录信息,从而提升应用的用户体验。
Android提供了`SharedPreferences`接口,用于在设备上持久化地存储键值对数据。可以将账号和加密后的密码存储在这里。 2. **加密与解密**:为了保护用户数据,我们需要对密码进行加密。Android提供了`KeyStore`系统...
- 使用edit()方法获取Editor对象,然后将用户名和密码(可加密存储)以及是否记住密码的选项存入SharedPreferences: ```java Editor editor = sharedPreferences.edit(); editor.putString("username", ...
6. 当用户选择“记住我”并登录后,下次打开应用时,可以在onCreate()方法中读取SharedPreferences中的用户名和密码,如果存在,可直接跳过登录界面,直接进入主界面。 以上就是关于Android Studio中实现登录界面...
在这个"android SharedPreferences"的主题中,我们将深入探讨SharedPreferences的工作原理、使用方法以及其在实现简单登录功能中的应用。 SharedPreferences是Android提供的一种轻量级的数据存储方式,它以键值对的...