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>