SharedPreferences储存数据基本用法

Android中SharedPreferences是一种常用的存储方式,它的存储形式是键值对的方式,一个“key”,对应一个“value”,SharedPreferences储存会以.xml文件的形式存储在/data/data//shared_prefs目录下。它会生成一个.xml文件,这个文件可以导出到电脑中查看的。

一.用SharedPreferences存储数据。
首先要获得SharedPreferences对象的实例。Android中有三种方式可以用来获取SharedPreferences对象。

  1. Context中的getSharedPreferences()方法
    这个方法有两个参数,第一个参数是指定xml文件的名字,第二个参数是指定操作模式。一般情况下有两种操作模式可以选择,第一种是MODE_PRIVATE,第二种模式是MODE_MULTI_PROCESS。其中,默认的操作模式是MODE_PRIVATE。我现在是初学者,目前第二种模式还没有用到过,不清楚具体有什么作用。以后学习到了再来补充吧

  2. Activity中的getPreferences()方法
    这个方法和Context中的getSharedPreferences()方法很相似,但是参数只有一个,只需要指定操作模式,不用指定文件名字。因为它会自动把活动的类名作为文件名字。

  3. PreferenceManager类中的getDefaultSharedPreferences()方法。
    这个方法接受一个Context参数。它会自动使用当前程序的包名来作为文件名。

然后现在得到了SharedPreferences对象,就可以写入数据了。要想加入数据,还需要调用SharedPreferences对象的edit()方法获取一个SharedPreferences.Editor对象。然后可以存入数据了,最后就使用commit()方法提交数据。

二.从SharedPreferences中读取数据。
用sharedPreferences对象的getString()等等一系列的get方法。
这写方法都是传入两个参数,第一个参数是键“key”,第二个参数是传入默认的值。意思是当这个值为空的时候或者数据不在的时候,默认的获取值是多少。

三。从SharedPreferences中清除某一个数据
用edit对象的remove()方法,这个方法传入一个参数,传入参数是键“key”

下面来看代码

java代码

public class SharedPreferencesActivity extends AppCompatActivity {
    Button btn_save;
    Button btn_read;
    Button btn_clear;
    EditText et_text;
    TextView tv_show;
    SharedPreferences sharedPreferences;
    SharedPreferences.Editor editor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shared_preferences);

        btn_read = (Button) findViewById(R.id.btn_read);
        btn_save = (Button) findViewById(R.id.btn_save);
        et_text = (EditText) findViewById(R.id.et_add_text);
        tv_show = (TextView) findViewById(R.id.tv_show);
        btn_clear = (Button) findViewById(R.id.btn_clear);
        sharedPreferences = getSharedPreferences("data", MODE_PRIVATE);
        editor = sharedPreferences.edit();//获取edit对象

        btn_save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                editor.putString("test", et_text.getText().toString());//存储数据
                editor.commit();//提交数据
                Toast.makeText(SharedPreferencesActivity.this, "存入数据", Toast.LENGTH_SHORT).show();
            }
        });

        btn_read.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(SharedPreferencesActivity.this, "显示数据", Toast.LENGTH_SHORT).show();
                String s = sharedPreferences.getString("test", "null");//读取数据,若不存在数据,则默认String为null
                if (s.equals("null")) {
                //判断数据是否为空
                    tv_show.setText("没有数据");
                } else {
                    tv_show.setText(s);
                }
            }
        });

        btn_clear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(SharedPreferencesActivity.this, "清除数据", Toast.LENGTH_SHORT).show();
                editor.remove("test");
                //清除某一个数据
                editor.commit();
            }
        });

    } 
}

总结:SharedPreferences是一种很方便的,很好用的存储数据的方式,通常情况下用来保存用户的设置信息。如果要对数据进行添加,删除操作,就必要要用SharedPreferences.Eidtor对象,而读取数据则用SharedPreferences对象就可以了,记得在添加删除完数据的时候,要用commit()方法提交,也可以使用apply()方法提交,这两个方法很相似的。具体有什么差别我还不是特别清楚。

猜你喜欢

转载自blog.csdn.net/m0_37076574/article/details/53927798