sp存储专门用来存储一些单一的小数据可以设置数据只能是当前应用读取,而别的应用不可以
应用卸载时会删除此数据
SharedPreferences:对应sp文件的接口
context.getSharedPreferences(String name,int mode):得到sp对象
name文件名(不带.xml) mode:生成的文件模式(是否是私有的,即其它应用是否可以访问)
Editor sp.edit():得到Editor对象
getXxx(name,defaultValue):根据name得到对应的数据
Editor:能更新sp文件的接口
有时我们会从activity1跳转到activity2,activity上设置数据后,按返回键后,当activity1再次跳转到activity2时会发现activity上的数据消失了,我们想要它上面的数据还要显示,这时就可以使用SharedPreferences
保存数据容易,但是要第二次进入activity2还会显示数据得想想怎么处理,在哪里处理,这里我采用的是自定义一些方法
首先保存数据,获取SharedPreferences对象,我们知道Sp并不能修改数据,通过Editor可以进行修改
private static SharedPreferences sp;//设置sp为成员变量
在onCreate的方法里进行获取对象
sp = getSharedPreferences("daojishi", Context.MODE_PRIVATE);//文件名为daojishi 其它的应用程序不能使用
保存时必须使用commit才能
sp.edit().putString("time", time).commit();
sp.edit().putString("kemu", kemu).commit();
sp.edit().putString("place", place).commit();
sp.edit().putString("dstime", dstime).commit();
sp.edit().putString("tian", tian).commit();
判断是否有数据
public static boolean contains(Context context,String key) {
sp = context.getSharedPreferences("daojishi", Context.MODE_PRIVATE);
return sp.contains(key);
}
设置完之后只需要在onCreate的方法里判断里面是否有数据,如果有就使用里面的数据
if (contains(this, "time")) {
time = sp.getString("time", "没有找到相应的value");
tian = sp.getString("tian", "没有找到相应的value");
kemu = sp.getString("kemu", "没有找到相应的value");
place = sp.getString("place", "没有找到相应的value");
dstime = sp.getString("dstime", "没有找到相应的value");
data.add(new DjS(kemu, time, place, dstime,tian ));
DJSAdapter adapter = new DJSAdapter(data, this);
setListAdapter(adapter);
}
当我们这个数据使用完毕后,想要删除这些信息,可以写一个清除信息的方法
public static void clearData() {
sp.edit().clear().commit();
}