基本概念
1.将数据存储到SharedPreferences中
要想使用SharedPreferences来存储数据,首先需要获取到SharePreferences对象。Android中主要提供三种方式用于得到SharedPreferences的对象
(1)Context类中的getSharedPreferences()方法
getSharedPreferences(String name, int mode),此方法接收两个参数。第一个参数是指定SharedPreferences的文件名称,如果指定的文件不存在的话,则会创建一个SharedPreferences文件,SharedPreferences文件都是存放在/data/data/<应用包名>/share_prefs/目录下;第二个参数指定操作模式,目前只有MODE_PRIVATE模式,其余的模式由于过于危险,因此被废弃了。
(2)Activity类中的getSharedPreferences()方法
这个方法和Context中的getSharePreferences()方法相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类型作为SharePreferences的文件名。
(3)PreferencesManager类中的getDefaultSharedPreferences()方法
这是一个静态方法,它接收一个Context类型的参数,并且自动调用当前应用程序的包名作为前缀来命名SharedPreferences文件。
emsp;获得SharePreferences的对象后,就可以向SharedPreferences文件中来存储数据了,主要分为3步实现:
(1)调用SharePreferences对象的edit()方法来获取一个SharePreferences.Editor对象。
(2)向SharedPreferences.Editor对象中添加数据,比如添加一个boolean类型的数据,调用putBoolean()方法,添加一个字符串,调用putString()方法。
(3)调用apply()方法或者是commit()方法来对添加的数据进行提交。
2.从SharePreferences中读取数据
SharedPreferences对象中提供一系列的get方法,用来存储的数据进行读取,每一中get方法对相应SharePreferences.Editor的一种put方法。这些get方法都接收两个参数,第一个参数是数据对应的key值,第二个参数是默认值,即当传入的键找不到对应的值时,给一个默认值
功能实践
新建一个SharePreferencesTest 安卓工程
实现布局文件,先找到 activity_main.xml文件,然后布局 两个按钮控件 和一个文本控件
布局代码
接下在MainActivity.java里面实现读写文件的代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
public static final String TAG = "MainActivity";
private Button save_button;
private Button read_button;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//通过控件id得到布局的控件
save_button = (Button) findViewById(R.id.save_buttion);
save_button.setOnClickListener(this);
read_button = (Button) findViewById(R.id.read_buttion);
read_button.setOnClickListener(this);
textView = (TextView) findViewById(R.id.text_view);
textView.setOnClickListener(this);
}
//按钮控件的点击事件
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.save_buttion:
{
SharedPreferences.Editor editor = getSharedPreferences("savedata",MODE_PRIVATE).edit();//初始化一个SharedPreferences对象指定文件名称
// 添加要储存的数据
editor.putString("name","zhangsan");
editor.putInt("age",1234);
editor.putBoolean("single",false);
editor.putString("education","研究生");
editor.apply();//提交
}
break;
case R.id.read_buttion:
{
SharedPreferences sharedPref = getSharedPreferences("savedata",MODE_PRIVATE);//指定文件名称
String name = sharedPref.getString("name","");
String education = sharedPref.getString("education","");
int age = sharedPref.getInt("age",0);
boolean single = sharedPref.getBoolean("single",true);
Log.d(TAG,"name is " + name);
Log.d(TAG,"education is " + education);
Log.d(TAG,"age is " + age+"\n"+"single is "+ single);
Log.d(TAG,"age is " + age);
//显示在文本控件上
textView.setText(name+education+age+single);
}
break;
default:
break;
}
}
}
数据输出截图
存储的文件可以通过模拟器工具查看