简单的说 SharedPreferences 就是使用键值对的方式将数据存储在一个xml文件中,可以使用getxxx(key,value),setxxx(key,value)方法读写数据。在每个应用程序的
Context中都有SharedPreferences对象,可使用getSharedPreferences()方法得到该实例
这个例程中在DBTest.java 得到SharedPreferences 对象,并写入数据,而在DBTest2.java中取得得到SharedPreferences对象,并读取数据。
在DBTest有一个按钮,点击此按钮进入DBTest2,而在DBTest2中显示SharedPreferences对象取得的数据
在SharedPreferences中是使用键值对(key,value)的方式来存取数据,这些数据是存储在一个xml文件中,这个xml文件是在data/data/程序包名/shared_prefs/文件下的
详细实现看代码:
public class DBTest extends Activity {private SharedPreferences sp;private TextView tv;private Button btn;@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);//每个应用程序的Context中都有SharedPreferences对象,获得SharedPreferences,并指定名称为demo,访问权限为本应用程序可访问//Context.MODE_READABLE,其他应用程序可读//Context.MODE_WRITEABLE,其他应用程序可写权限//Context.MODE_PRIVATE只有当前程序可访问 sp = this.getSharedPreferences("demo", Context.MODE_PRIVATE); //使用SharedPreferences的内部类Editor对象对demo.xml文件进行编辑 SharedPreferences.Editor editor = sp.edit(); //编辑数据 editor.putString("name", "zhangsan"); editor.putInt("id", 123); editor.putString("class", "dasan"); editor.commit();//最后要commit否则,修改数据无效 tv = (TextView)findViewById(R.id.tv); tv.setText(sp.toString());//此行纯属测试,无意义 btn = (Button)findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {startActivity(new Intent(DBTest.this,DBTest2.class));}}); }}
?
public class DBTest2 extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);TextView tv = new TextView(this);SharedPreferences sp = this.getSharedPreferences("demo", Context.MODE_PRIVATE);//同样的方法,得到SharedPreferences实例SharedPreferences.Editor editor = sp.edit();editor.putInt("fenshu", 96);//可以对SharedPreferences对象进行修改editor.commit();//一定要commit,否则无法读取//显示数据tv.setText("id:"+sp.getInt("id", 0)+" name:"+sp.getString("name", null)+" class:"+sp.getString("class", null)+" fenshu:"+sp.getInt("fenshu", 0));setContentView(tv);}}
?
<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map><int name="id" value="123" /><string name="class">dasan</string><int name="fenshu" value="96" /><string name="name">zhangsan</string></map>
?
该文件是存储在data/data/me.android.dbtest/shared_prefs/demo.xml,me.android.dbtest是本应用程序的包名。在eclipse中运行本程序后,
打开File Explorer
(可在Window->show view->others->general->file explorer打开)并可以得到此xml文件
?