(六) 数据存储 Part 2 SharedPreferences方式

时间:2023-03-09 16:22:20
<Android基础> (六) 数据存储 Part 2 SharedPreferences方式

6.3 SharedPreferences存储

SharedPreferences使用键值对的方式来存储数据。同时支持多种不同的数据类型。

6.3.1 将数据存储到SharedPreferences中

得到SharedPreferces对象的三种方式:

1.Context类中的getSharedPreferences()方法

接收两个参数,第一个为用于指定SharedPreferences文件的名称,指定文件不存在则会创建一个。

第二个用于制定操作模式,MODE_PRIVATE。

2.Activity类中的getPreferences()方法

只接收操作模式,会自动将当前类名作为SharedPreferences的文件名

3.PreferenceManager类中的getDefaultSharedPrefences()方法

静态方法,接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件,得到了SharedPreferences对象之后,开始向SharedPrefences文件中存储数据,分为3步:

a.调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象

b.向SharedPreferences.Editor对象中添加数据,putString(),putInt(),putBoolean()......

c.调用apply()方法将添加的数据提交,完成操作

新建项目SharedPreferencesTest项目

添加一个Button

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"> <Button
android:id="@+id/save"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Save"/> </LinearLayout>

修改MainActivity中的代码

public class MainActivity extends AppCompatActivity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.save);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = getSharedPreferences("data",
MODE_PRIVATE).edit();
editor.putString("name", "WenWen");
editor.putInt("age", 18);
editor.putBoolean("married", false
);
editor.apply();

}
});
}

用part 1中同样的方法将data保存到电脑中并查看

以xml格式来进行管理数据

<Android基础> (六) 数据存储 Part 2 SharedPreferences方式

6.3.2 从SharedPreferences中读取数据

SharePreferences对象中提供了一系列的get方法,get方法接收两个参数,第一个为键,第二个为默认参数,即找不到对应的键值返回的默认值

界面中加个Button用于读取数据

  <Button
android:id="@+id/resotre_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Restore data"/>

修改MainActivity中的代码

 Button restoreData = (Button)findViewById(R.id.resotre_data);
restoreData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences pref = getSharedPreferences("data", MODE_PRIVATE);
String name = pref.getString("name","");
int age = pref.getInt("age", 0);
boolean married = pref.getBoolean("married", false);
Log.d("MainActivity", "name is " + name);
Log.d("MainActivity", "age is " + age);
Log.d("MainActivity", "marride is " + married);
}
});

运行程序:

<Android基础> (六) 数据存储 Part 2 SharedPreferences方式