1. SharedPreferences概述:


SharedPreferences是android提供的、基于xml文件的一种用于保存简单数据的数据存储机制



 



二、使用步骤:



  1. 取得SharedPreferences对象


SharedPreferences pref = getSharedPreferences("userinfo", MODE_PRIVATE);



参数说明:



第一个参数为生成的用于存储数据的xml文件的名称;



第二个参数为该文件的存储权限;



SharedPreferences生成的xml文件的存储权限分为以下几种:



  • Activity.MODE_PRIVATE:默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Activity.MODE_APPEND  
  • Activity.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取
  • Activity.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入;  
  •  Activity.MODE_APPEND:该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
     //如果希望文件被其他应用读和写,可以传入:
    Activity.MODE_WORLD_READABLE+Activity.MODE_WORLD_WRITEABLE 


  1. 取得编辑对象Editor



Editor editor = pref.edit();



  1. 存入数据


editor.putXXX();



  1. 提交


editor.commit();



 



  1. 取数据



pref.getXXX();



 



下面看简单使用示例:



1、xml文件



<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context="com.example.sharedpreferencedemo.MainActivity" >

 

    <TextView

        android:id="@+id/textView1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"

        android:layout_alignParentTop="true"

        android:text="用户名:"/>

 

    <EditText

        android:id="@+id/et_user_name"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentRight="true"

        android:layout_alignParentTop="true"

        android:layout_marginLeft="15dp"

        android:inputType="text"

        android:layout_toRightOf="@+id/textView1"

        android:ems="10" >

 

        <requestFocus/>

    </EditText>

 

    <EditText

        android:id="@+id/et_password"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignBaseline="@+id/textView2"

        android:layout_alignBottom="@+id/textView2"

        android:layout_alignLeft="@+id/et_user_name"

        android:layout_alignParentRight="true"

        android:ems="10"

        android:inputType="text" />

 

    <Button

        android:id="@+id/button2"

        android:onClick="doClick"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignBaseline="@+id/button1"

        android:layout_alignBottom="@+id/button1"

        android:layout_centerHorizontal="true"

        android:text="取消"/>

 

    <CheckBox

        android:id="@+id/is_check"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignRight="@+id/button2"

        android:layout_below="@+id/et_password"

        android:text="保存用户名"/>

 

    <Button

        android:id="@+id/button1"

        android:onClick="doClick"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignLeft="@+id/et_password"

        android:layout_below="@+id/is_check"

        android:text="登录"/>

 

    <TextView

        android:id="@+id/textView2"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignRight="@+id/textView1"

        android:layout_below="@+id/et_user_name"

        android:layout_marginTop="24dp"

        android:text="密码:"/>

 

</RelativeLayout>


 



界面大体样子如下:






下面是主activity程序:



package com.example.sharedpreferencedemo;

 

import android.app.Activity;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.os.Bundle;

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 {

         EditText etUserName,etPassword;

         CheckBox chk;

         Button login,cancel;

         SharedPreferences pref;

         Editor editor;

         @Override

         protected void onCreate(Bundle savedInstanceState) {

                   super.onCreate(savedInstanceState);

                   setContentView(R.layout.activity_main);

                   etUserName = (EditText)findViewById(R.id.et_user_name);

                   etPassword = (EditText)findViewById(R.id.et_password);

                   chk = (CheckBox)findViewById(R.id.is_check);

                   login = (Button)findViewById(R.id.button1);

                   cancel = (Button)findViewById(R.id.button2);

                   pref = getSharedPreferences("userinfo", MODE_PRIVATE);

                   editor = pref.edit();

                   if (pref.getBoolean("isSave", false)) {

                            etUserName.setText(pref.getString("userName", ""));

                            chk.setChecked(true);

                   }else {

                            chk.setChecked(false);

                   }

                   

                   login.setOnClickListener(new OnClickListener() {

                            

                            @Override

                            public void onClick(View v) {

                                     String name = etUserName.getText().toString().trim();

                                     String pass = etPassword.getText().toString().trim();

                                     if (name.equals("admin")&&pass.equals("123456")) {

                                               if (chk.isChecked()) {

                                                        editor.putString("userName", name);

                                                        editor.putBoolean("isSave", chk.isChecked());

                                                        editor.commit();

                                               }else{

                                                        editor.clear();

                                                        editor.remove("userName");

                                                        editor.remove("isSave");

                                                        editor.commit();

                                               }

                                               Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();

                                     }else{

                                               Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show();

                                     }

                                     

                            }

                   });

         }

         

}



此程序代码比较丑,代码也没什么条理性,但是仅供参考以及个人笔记回顾所用;