Android中SharedPreferences是一种常用的存储方式,它的存储形式是键值对的方式,一个“key”,对应一个“value”,SharedPreferences储存会以.xml文件的形式存储在/data/data//shared_prefs目录下。它会生成一个.xml文件,这个文件可以导出到电脑中查看的。
一.用SharedPreferences存储数据。
首先要获得SharedPreferences对象的实例。Android中有三种方式可以用来获取SharedPreferences对象。
Context中的getSharedPreferences()方法
这个方法有两个参数,第一个参数是指定xml文件的名字,第二个参数是指定操作模式。一般情况下有两种操作模式可以选择,第一种是MODE_PRIVATE,第二种模式是MODE_MULTI_PROCESS。其中,默认的操作模式是MODE_PRIVATE。我现在是初学者,目前第二种模式还没有用到过,不清楚具体有什么作用。以后学习到了再来补充吧Activity中的getPreferences()方法
这个方法和Context中的getSharedPreferences()方法很相似,但是参数只有一个,只需要指定操作模式,不用指定文件名字。因为它会自动把活动的类名作为文件名字。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()方法提交,这两个方法很相似的。具体有什么差别我还不是特别清楚。