SharedPreferences是Android中一种轻型的数据存储类。本质上是基于XML文件进行存储Key-Value键值对的数据,生成的XML文件的目录在/data/data/包名/Shared_Pref/下。主要是用来存储一些简单的配置信息,如登录时是否保存用户名密码等。

SharedPreferences本身只能获取数据而不支持存储或修改,存储修改是通过SharedPreferences的一个内部接口Editor来实现的。

实现SharedPreferences存储的步骤如下:

① 获取SharedPreferences对象;

② 获取SharedPreferences.Editor对象;

③ 通过Editor接口的putXxx方法保存K-V键值对。Xxx表示不同的数据类型(float,int,String,boolean,long);

④ 使用Editor接口的commit方法进行操作的提交。

使用SharedPreferences的过程比较简单,下面通过一个保存用户名的小案例演示一下SharedPreferences的简单使用。

主布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_marginTop="20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/tvUsername"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="14dp"
            android:text="用户名"
            android:textSize="20dp"
            android:textAlignment="center"/>
        <EditText
            android:id="@+id/etUsername"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/Base.V7.Widget.AppCompat.EditText"/>
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp">
        <TextView
            android:id="@+id/tvPassword"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="14dp"
            android:text="密    码"
            android:textSize="20dp"
            android:textAlignment="center"/>
        <EditText
            android:id="@+id/etPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPassword"
            android:theme="@style/Base.V7.Widget.AppCompat.EditText"/>
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp">
        <TextView
            android:id="@+id/tvRememberUsername"
            android:text="保存用户名"
            android:textSize="15dp"
            android:layout_marginLeft="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
       <CheckBox
           android:id="@+id/cbRememberUsername"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content" />

    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp">
        <Button
            android:id="@+id/btnLogin"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_marginRight="15dp"
            android:layout_marginLeft="10dp"
            android:layout_height="60dp"
            android:text="登录"
            android:textSize="20dp"/>

        <Button
            android:id="@+id/btnCancel"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_marginRight="10dp"
            android:layout_marginLeft="5dp"
            android:layout_height="60dp"
            android:text="取消"
            android:textSize="20dp"/>

    </LinearLayout>
</LinearLayout>
activity_main

相关文章: