-
SharedPreferences概述:
SharedPreferences是android提供的、基于xml文件的一种用于保存简单数据的数据存储机制
二、使用步骤:
-
取得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
-
取得编辑对象Editor
Editor editor = pref.edit(); |
-
存入数据
editor.putXXX(); |
-
提交
editor.commit(); |
-
取数据
pref.getXXX(); |
下面看简单使用示例:
1、xml文件
<RelativeLayout xmlns: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(); }
} }); }
} |
此程序代码比较丑,代码也没什么条理性,但是仅供参考以及个人笔记回顾所用;