SharedPreferences实现了数据存储,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。
其存储位置在/data/data/<包名>/shared_prefs目录下。我们可以进入DDMS模式,然后在File Explorer中展开到/data/data/<package name>/shared_prefs下就可以看见自己建立的文件(XML类型)了。
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
步骤:
(1)获取SharedPreferences对象
(2)利用edit()方法获取Editor对象。
(3)通过Editor对象存储key-value键值对数据。
(4)通过commit()方法提交数据。
然后我们把白天出去浪的简单介绍存储起来。在这之前我们来介绍另一个内容——android 的四种枚举Context。
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
我们后面用到了这个呢。
activity_main.xml
假装有代码,哈哈,放两个按钮通过Onclick触发就好。一个保存一个读取。
MainActivity.java
package com.example.sharedpreferences;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void btn1(View view) {
// TODO Auto-generated method stub
SharedPreferences shared=MainActivity.this.getSharedPreferences("a", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor=shared.edit();
editor.putString("Date", "Christmas Eve");
editor.putString("Activity", "Climbing MeiLing mountains");
editor.putString("Member", "I and my team");
editor.commit();
Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
}
public void btn2(View view) {
// TODO Auto-generated method stub
SharedPreferences sharedPreferences=MainActivity.this.getSharedPreferences("a", Activity.MODE_PRIVATE);
String date=sharedPreferences.getString("Date", "");
String activity=sharedPreferences.getString("Activity", "");
String member=sharedPreferences.getString("Member", "");
String info="游玩日期:"+date+"\n游玩活动:"+activity+"\n成员:"+member;
Toast.makeText(getApplicationContext(), info, Toast.LENGTH_SHORT).show();
}
}
平安夜快乐呦,不过到了圣诞节了呢,过了12点。有什么关系,洋节日和我们并没有多大的关系。