Android数据存储方案之持久化技术—SharedPreferences存储

Android—SharedPreferences存储

SharedPreferences是使用键值对的方式来存储数据的
保存数据需要给该数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来
SharedPreferences支持多种不同的数据类型存储,入:int,String,boolean等

获取SharedPreferences对象(3种获取方式)

Context类中的getSharedPreferences(v1,v2)方法

该方法接收两个参数:
	第一个参数v1:用于指定SharedPreferences文件的名称
	第二个参数v2:文件的操作模式,唯一值(MODE_PRIVATE),和直接传入0的效果相同,表示只有当前的应用程序才可以对文件进行读写操作(android版本6.0以上)

Activity类中的getSharedPreferences(v1)方法

该方法只接收一个参数:
	第一个参数v1:文件的操作模式,唯一值(MODE_PRIVATE),和直接传入0的效果相同,表示只有当前的应用程序才可以对文件进行读写操作(android版本6.0以上)
文件名默认为当前活动的类名

Preferences类中的getDefaultSharedPreferences(v1)静态方法

该方法只接收一个参数:
	第一个参数v1:接收一个Context参数,也就是当前类名.this
文件名默认为当前应用程序的包名

SharedPreferences存储数据步骤

1.调用SharedPreferences对象的edit方法来获得一个SharedPreferences.Editor对象
2.想SharedPreferences.Editor对象添加数据,比如添加一个字符串putString(key,value)方法
3.调用apply()方法完成数据提交,从而完成数据存储操作

SharedPreferences读取数据步骤

1.获取到SharedPreferences对象
2.SharedPreferences对象中提供了一系列的get方法都对应SharedPreferences.Editor对象中的put方法
3.get方法都接收两个参数,第一个是键,第二个是默认值(传入的键找不到对应的值,返回默认值)

Android——SharedPreferences读写案例

图一是启动程序界面
图二输入数据,并保存
图四查看保存的数据
图五提取文件数据到文本框
在这里插入图片描述

代码

MainActivity.java

package com.example.f6_2;

import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

/**
 *
 *
 * SharedPreferences存储,以键值对方式存储
 */
public class MainActivity extends AppCompatActivity {
    private Button bt1,bt2;
    private Button bt3,bt4;
    private Button bt5,bt6;
    private EditText e1,e2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bt1=findViewById(R.id.but_add1);
        bt2=findViewById(R.id.but_del1);
        bt3=findViewById(R.id.but_add2);
        bt4=findViewById(R.id.but_del2);
        bt5=findViewById(R.id.but_add3);
        bt6=findViewById(R.id.but_del3);

        e1=findViewById(R.id.edit_name);
        e2=findViewById(R.id.edit_pass);




        /**
         * PreferenceManager类中的getDefaultSharedPreferences(v1)方法得到SharedPreferences对象
         *  该方法的一个参数v1
         *        文件名当前包名前缀
         *
         *
         *            V1:Context
         *
         *
         * 通过SharedPreferences对象的putString(putInt,putBoolean)方法存储数据,数据以键值对的方式存储
         * 通过SharedPreferences对象的apply()方法提交
         *
         *写入需要在SharedPreferences对象后加Editor
         *
         *
         * 点击按钮,将EditTest中的文本写入文件中
         */
        bt5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username=e1.getText().toString();
                String password=e2.getText().toString();
                SharedPreferences.Editor se= PreferenceManager.getDefaultSharedPreferences(MainActivity.this).edit();
                se.putString("username",username);
                se.putString("password",password);
                se.apply();
                e1.setText("");
                e2.setText("");
            }
        });


        /**
         * PreferenceManager类中的getDefaultSharedPreferences(v1)方法得到SharedPreferences对象
         该方法的一个参数v1
         *        文件名当前包名前缀
         *
         *
         *            V1:Context
         *
         *    调用SharedPreferences对象的getString方法,获取文件中的内容
         *              getString(v1,v2)
         *                  v1:是键
         *                  v2:是默认值,当键不存在是,返回默认值
         *
         */
        bt6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences pref=PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
                String username=pref.getString("username","空3");
                String password=pref.getString("password","空3");
                e1.setText(username);
                e2.setText(password);
            }
        });























        /**
         * Activity类中的getSharedPreferences(v1)方法得到SharedPreferences对象
         *  该方法的一个参数v1
         *        文件名默认,当前活动的活动名
         *            V1:文件操作模式,只有一种模式可选,MODE_PRIVATE默认模式,和直接传入0效果相同,
         *                  表示只有当前的应用程序才可以对SharedPreferences文件进行读写
         *
         *
         * 通过SharedPreferences对象的putString(putInt,putBoolean)方法存储数据,数据以键值对的方式存储
         * 通过SharedPreferences对象的apply()方法提交
         *
         *写入需要在SharedPreferences对象后加Editor
         *
         *
         * 点击按钮,将EditTest中的文本写入文件中
         */
        bt3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username=e1.getText().toString();
                String password=e2.getText().toString();
                SharedPreferences.Editor se=getPreferences(MODE_PRIVATE).edit();
                se.putString("username",username);
                se.putString("password",password);
                se.apply();
                e1.setText("");
                e2.setText("");

            }
        });


        /**
         * Context类中的getSharedPreferences(v1)方法得到SharedPreferences对象
         *  该方法的一个参数v1
         *
         *            V1:文件操作模式,只有一种模式可选,MODE_PRIVATE默认模式,和直接传入0效果相同,
         *                  表示只有当前的应用程序才可以对SharedPreferences文件进行读写
         *
         *    调用SharedPreferences对象的getString方法,获取文件中的内容
         *              getString(v1,v2)
         *                  v1:是键
         *                  v2:是默认值,当键不存在是,返回默认值
         *
         */
        bt4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences pref=getPreferences(MODE_PRIVATE);
                String username=pref.getString("username","空2");
                String password=pref.getString("password","空2");
                e1.setText(username);
                e2.setText(password);
            }
        });




        /**
         * Context类中的getSharedPreferences(v1,v2)方法得到SharedPreferences对象
         *  该方法的两个参数v1,v2
         *          v1:文件名
         *            V2:文件操作模式,只有一种模式可选,MODE_PRIVATE默认模式,和直接传入0效果相同,
         *                  表示只有当前的应用程序才可以对SharedPreferences文件进行读写
         *
         *
         * 通过SharedPreferences对象的putString(putInt,putBoolean)方法存储数据,数据以键值对的方式存储
         * 通过SharedPreferences对象的apply()方法提交
         *
         *写入需要在SharedPreferences对象后加Editor
         *
         *
         * 点击按钮,将EditTest中的文本写入f6_2文件中
         */
        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username=e1.getText().toString();
                String password=e2.getText().toString();
                SharedPreferences.Editor se=getSharedPreferences("f6_2",MODE_PRIVATE).edit();
                se.putString("username",username);
                se.putString("password",password);
                se.apply();
                e1.setText("");
                e2.setText("");
            }
        });


        /**
         * Context类中的getSharedPreferences(v1,v2)方法得到SharedPreferences对象
         *  该方法的两个参数v1,v2
         *          v1:文件名
         *            V2:文件操作模式,只有一种模式可选,MODE_PRIVATE默认模式,和直接传入0效果相同,
         *                  表示只有当前的应用程序才可以对SharedPreferences文件进行读写
         *
         *    调用SharedPreferences对象的getString方法,获取文件中的内容
         *              getString(v1,v2)
         *                  v1:是键
         *                  v2:是默认值,当键不存在是,返回默认值
         *
         */
        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences pref=getSharedPreferences("f6_2",MODE_PRIVATE);
                String username=pref.getString("username","空");
                String password=pref.getString("password","空");
                e1.setText(username);
                e2.setText(password);
            }
        });

    }
}

activity_main.xml

<?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"
    tools:context=".MainActivity"
    android:orientation="vertical"
    >




    <EditText
        android:id="@+id/edit_name"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:textSize="40dp"
        android:maxLines="1"
        android:hint="用户名"
        />
    <EditText
        android:id="@+id/edit_pass"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:textSize="40dp"
        android:maxLines="1"
        android:hint="密码"
        />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:text="getSharedPreferences (Context类)"
        android:gravity="center_horizontal"
        />



<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_horizontal"
    >


    <Button
        android:id="@+id/but_add1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:text="保存"
        />
    <Button
        android:id="@+id/but_del1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:text="提取"
        />

</LinearLayout>




    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:text="getPreferences
 (Activity类)"
        android:gravity="center_horizontal"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_horizontal"
        >
        <Button
            android:id="@+id/but_add2"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:text="保存"
            />
        <Button
            android:id="@+id/but_del2"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:text="提取"
            />
    </LinearLayout>






        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="30dp"
            android:text="getDefaultSharedPreferences
     (PreferenceManager类)"
            android:gravity="center_horizontal"
            />


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_horizontal"
            >
            <Button
                android:id="@+id/but_add3"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:textSize="20dp"
                android:text="保存"
                />
            <Button
                android:id="@+id/but_del3"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:textSize="20dp"
                android:text="提取"
                />
        </LinearLayout>

</LinearLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大树下躲雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值