<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格式来进行管理数据

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);
            }
        });

运行程序:

 

posted @ 2019-04-11 10:50  HarSong13  阅读(217)  评论(0编辑  收藏  举报