除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它比SQlite使用起来更加的方便,当然它的功能也没有SQlite那么的强大,如果要存储一些简单的键值对数据可以采用此方法.
实现SharedPreferences存储的步骤如下:
1,通过上下文(Context)获取默认SharedPreferences对象
mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
2,通过Editor对象来写入数据
Editor editor = mPreferences.edit();
editor.putBoolean("Test1", true);
editor.putString("Test2", "This is Test2");
editor.putInt("Test3", 3);
editor.commit();
3,读取保存的数据
mPreferences.getBoolean("Test1", false)
mPreferences.getString("Test2", "No String")
mPreferences.getInt("Test3", -1)
如果要读取的键值对不存在,就会返回一个默认设置的值
比如mPreferences.getString("Test2", "No String")返回的是"No String"
除了使用默认的SharedPreferences,还可以定义自己的SharedPreferences
MySP = getSharedPreferences("huahuadashen_SP", Context.MODE_PRIVATE);
写入和读取的操作方式跟上面步骤一样,只是保存的名字不同
下面直接贴代码:
package com.example.mysharedpreferencesactivity;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private SharedPreferences mPreferences;
private SharedPreferences MySP;
private Button btn1;
private Button btn2;
private Button btn3;
private Button btn4;
private Button btn5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//得到自定义的SharedPreferences
MySP = getSharedPreferences("huahuadashen_SP", Context.MODE_PRIVATE);
//得到默认的SharedPreferences
mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = mPreferences.edit();
editor.putBoolean("Test1", true);
editor.putString("Test2", "This is Test2");
editor.putInt("Test3", 3);
editor.commit();
btn1 = (Button)findViewById(R.id.BtnTest1);
btn1.setOnClickListener(new KeyBtnListener());
btn2 = (Button)findViewById(R.id.BtnTest2);
btn2.setOnClickListener(new KeyBtnListener());
btn3 = (Button)findViewById(R.id.BtnTest3);
btn3.setOnClickListener(new KeyBtnListener());
btn4 = (Button)findViewById(R.id.BtnTest4);
btn4.setOnClickListener(new KeyBtnListener());
btn5 = (Button)findViewById(R.id.BtnTest5);
btn5.setOnClickListener(new KeyBtnListener());
}
private class KeyBtnListener implements OnClickListener{
@Override
public void onClick(View v) {
int id = v.getId();
if(id == R.id.BtnTest1)
{
if(mPreferences.getBoolean("Test1", false))
{
Toast.makeText(MainActivity.this, "Test1 is ture", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(MainActivity.this, "Test1 is false", Toast.LENGTH_SHORT).show();
}
}
else if(id == R.id.BtnTest2)
{
Toast.makeText(MainActivity.this, mPreferences.getString("Test2", "No String"), Toast.LENGTH_SHORT).show();
}
else if(id == R.id.BtnTest3)
{
Toast.makeText(MainActivity.this, mPreferences.getInt("Test3", -1)+"", Toast.LENGTH_SHORT).show();
}
else if(id == R.id.BtnTest4)
{
Editor editor = MySP.edit();
editor.putInt("huahuadashen", 123);
editor.commit();
Toast.makeText(MainActivity.this, "写入成功!", Toast.LENGTH_SHORT).show();
}
else if(id == R.id.BtnTest5)
{
if(MySP.getInt("huahuadashen", -1) == -1)
{
Toast.makeText(MainActivity.this, "没有文件时,默认返回的是-1", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(MainActivity.this, "得到的值为:"+MySP.getInt("huahuadashen", -1), Toast.LENGTH_SHORT).show();
}
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
大家把程序运行完后,会在/data/data/com.example.mysharedpreferencesactivity/shared_prefs/目录下保存2个xml文件
一个是默认的xml文件,一个是自定义的xml文件,里面保存的都是键值对
下面是源码连接