美文网首页程序员我爱编程
Android:6数据存储_2SharedPreferences

Android:6数据存储_2SharedPreferences

作者: zhang_yongfeng | 来源:发表于2018-05-24 01:57 被阅读0次

    本文是以Android Studio为开发工具,<<第一行代码Anroid第2版>> 为学习指导书籍的学习记录

    6.3 SharedPreferences存储

    1、不同于文件的存储方式,SharedPreferences是使用==键值对==的方式来存储数据的。即、当你保存了一条数据的时候,需要给这条数据提供对应的一个键,这样在读取数据的时候就可以通过这个“键“ 把存进去的“值”取出来。
    2、SharedPreferences支持多种不同的数据类型存储,如果存进去的是整型,那么读取出来的也是整型。

    6.3.1 将数据存储到SharedPreferences中

    要使用SharedPreferences来存储数据,在先获取到SharedPreferences对象。Android中主要是提供了3种方法用于得到SharedPreferences对象。
    1、Context类中的getSharedPreferences()方法
    -参数传文件名和操作模式(MODE_PRIVATE)两个参数
    2、Activity类中的getPreferences()方法
    -传一个参数,只用传操作模式(MODE_PRIVATE)文件名会默认为当前活到的类名
    3、PreferenceManager类中的getDeafultSharedPreferences()方法


    存储流程
    (1)调用SharedPreferences对象的edit()方法获取一个SharedPreferences.Editor对象
    (2)向对象添加数据,如添加一个布尔型数据使用putBoolean()方法,添加一个字符串则使用putString()方法。
    (3)调用apply()方法将添加的数据提交。

    新一个SharedPreferencesTes项目
    修改activity_main.xml中的代码如下

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <Button
            android:id="@+id/save_data"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="save data"/>
    
    </LinearLayout>
    

    截图如下:


    图1.

    修改MainActivity中的代码如下:

    package com.zyf.android.sharedpreferencestest;
    
    import android.content.SharedPreferences;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button saveData = (Button) findViewById(R.id.save_data);
            saveData.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v){
                    SharedPreferences.Editor editor = getSharedPreferences("data2",MODE_PRIVATE).edit();
                    editor.putString("Name","Tom");
                    editor.putInt("age",28);
                    editor.putBoolean("married",false);
                    editor.apply();
                }
            });
        }
    }
    
    

    截图如下:


    图2.

    运行代码,查看/data/date/<pageage name>/shared_prefs目录如下


    Snip20180523_5.png

    运行效果图


    Snip20180523_7.png

    6.3.2 从SharedPreferences中读取数据

    通过getSharedPreferences方法得到一个SharePreferences对象,然后调用对象的getString(),getInt(),getBoolean()方法来拿到对应的值,然后打log出来。

    修改activity_main.xml中的代码如下;

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <Button
            android:id="@+id/save_data"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="save data"/>
    
        <Button
            android:id="@+id/restore_data"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Restore data"/>
    </LinearLayout>
    

    载图如下:


    Snip20180524_10.png

    修改MainActivity中的代码如下:

    package com.zyf.android.sharedpreferencestest;
    
    import android.content.SharedPreferences;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button saveData = (Button) findViewById(R.id.save_data);
            saveData.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v){
                    SharedPreferences.Editor editor = getSharedPreferences("data2",MODE_PRIVATE).edit();
                    editor.putString("Name","Tom");
                    editor.putInt("age",28);
                    editor.putBoolean("married",false);
                    editor.apply();
                }
            });
    
            Button resoterData = (Button) findViewById(R.id.restore_data);
            resoterData.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v){
                    SharedPreferences pref = getSharedPreferences("data2",MODE_PRIVATE);
                    String name = pref.getString("Name","");
                    int age = pref.getInt("age",0);
                    boolean married = pref.getBoolean("married",false);
                    Log.i("show_mainActivity_log","name is " + name);
                    Log.i("show_mainActivity_log","age is " + age);
                    Log.i("show_mainActivity_log","married is " + married);
                }
            });
        }
    }
    
    

    截图如下(运行后的代码有log ):


    Snip20180524_11.png

    写在最后
    本示例源码下载百度云地址

    1. 数据库存储。还在学习,稍后更新,敬请期侍!互勉!(关注持续更新)

    个人github博客地址:
    zhangyongfeng"s blogs

    相关文章

      网友评论

        本文标题:Android:6数据存储_2SharedPreferences

        本文链接:https://www.haomeiwen.com/subject/kzcjjftx.html