SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:
一、根据Context获取SharedPreferences对象
二、利用edit()方法获取Editor对象。
三、通过Editor对象存储key-value键值对数据。
四、通过commit()方法提交数据。
下面实现一个案例 在Aactivity输入信息后(存储信息),在Bactivity显示出来(读取信息)~
先构建个布局如上图用于输入信息;
mainactivity的程序代码如下(用于保存输入的信息):
package com.example.sharedpreferencesdemo;
import android.os.Bundle;
import android.preference.Preference;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private EditText inputname=null;
private EditText inputage=null;
private EditText inputsex=null;
private Button submit=null;
private String PREFERENCE_NAME = "savasetting";
private int MODE = Context.MODE_WORLD_READABLE
+ Context.MODE_WORLD_WRITEABLE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
this.inputname=(EditText)this.findViewById(R.id.inputname);
this.inputage=(EditText)this.findViewById(R.id.inputage);
this.inputsex=(EditText)this.findViewById(R.id.inputsex);
this.submit=(Button)this.findViewById(R.id.submit);
this.submit.setOnClickListener(new OnClickListenerImpl());
}
private class OnClickListenerImpl implements OnClickListener{
@Override
public void onClick(View v) {
MainActivity.this.savePreferences();
Intent intent=new Intent(MainActivity.this,Newactivity.class);
MainActivity.this.startActivity(intent);
}
}
private void savePreferences() {
SharedPreferences share = this.getSharedPreferences(PREFERENCE_NAME,
MODE);
SharedPreferences.Editor editor = share.edit();
editor.putString("name", this.inputname.getText().toString());
editor.putInt("age", Integer.parseInt(this.inputage.getText().toString()));
editor.putString("sex", this.inputsex.getText().toString());
editor.commit();
}
}
新建个activity读取mainactivity存储的信息并且显示在界面上
package com.example.sharedpreferencesdemo;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.view.Menu;
import android.widget.TextView;
public class Newactivity extends Activity {
private String PREFERENCE_NAME = "savasetting";
private int MODE = Context.MODE_WORLD_READABLE
+ Context.MODE_WORLD_WRITEABLE;
private TextView text1 = null;
private TextView text2 = null;
private TextView text3 = null;
private String name;
private int age;
private String sex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_newactivity);
this.text1 = (TextView) this.findViewById(R.id.text1);
this.text2 = (TextView) this.findViewById(R.id.text2);
this.text3 = (TextView) this.findViewById(R.id.text3);
loadPreferences();
this.text1.setText(name);
this.text2.setText(String.valueOf(age));
this.text3.setText(sex);
}
private void loadPreferences() {
SharedPreferences share = getSharedPreferences(PREFERENCE_NAME, MODE);
name = share.getString("name", "Tom");
age = share.getInt("age", 20);
sex = share.getString("sex", "男");
System.out.println(name);
}
}