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));
以上就是本文的全部内容,希望对大家的学习有所帮助。
本文地址:https://www.stayed.cn/item/18379
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我