SharedPreferences基本使用(附源码)

来源:互联网 发布:python shell怎么打开 编辑:程序博客网 时间:2024/05/16 06:26

除了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; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//得到自定义的SharedPreferencesMySP = getSharedPreferences("huahuadashen_SP", Context.MODE_PRIVATE);//得到默认的SharedPreferencesmPreferences = 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{@Overridepublic 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();}}}}@Overridepublic 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文件,里面保存的都是键值对

下面是源码连接

点击打开链接