1.SharedPreferences是Android平台上一个轻量级的存储类,简单的说就是能够存储一些咱们须要的变量信息。2个activity 之间的数据传递除了能够他经过intent来传递数据,还能够使用SharedPreferences来共享数据的方式。SharedPreferences生成的是xml文件。android
SharedPreferences 用法很简单,若是你想要编辑SharedPreferences中的内容就须要用到Editor对象。shell
2.下面使用一个案例来进一步理解SharedPreferences和Editor数据库
(1)下面以一个登录界面的设计为例,分析其和SharedPreferences有关代码,设计简单的界面以下图所示。api
(2)下面这个方法能够实现保存用户名和密码,数据存放很像Map集合,以键值对的方式存放。关键代码:app
SharedPreferences sp = this.getSharedPreferences("config", MODE_PRIVATE)其中"config"文件名(能够本身命名),MODE_PRIVATE为文件的权限(这里是私有文件);编辑器
Editor editor = sp.edit()得到编辑这个文件的编辑器; ide
editor.putString("username", str_username);利用编辑器编辑内容;this
editor.commit()调用这个方法提交保存数据。spa
附加备注:设计
Context.MODE_PRIVATE:为默认操做模式,表明该文件是私有数据,只能被应用自己访问,在该模式下,写入的内容会覆盖原文件的内容,若是想把新写入的内容追加到原文件中。可使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,不然就建立新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其余应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件能够被其余应用读取;
MODE_WORLD_WRITEABLE:表示当前文件能够被其余应用写入。
(3)下面这个方法能够实现读取出存放的数据,经过键获得值,而且知道填充到对应的编辑框。关键代码只有两句:
SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE)其中"config"文件名,MODE_PRIVATE为文件的权限;
String str_username = sp.getString("username", "")和String str_password = sp.getString("password", "")都是取出对应的数据。
(4)分析:建立对象时有到getSharedPreferences(name, mode)方法,参数name实际上是文件名,mode实际上是文件权限。这个文件是自动生成的一个xml文件:
(5)能够打开这个xml文件文件,或者有adb shell cat查看这个文件内容,可见用这种方法特殊字符也是能够存放的。
3. SharedPreferences使用步骤:
>用来保存用户的配置信息和简单的数据步骤:
1. 声明 SharedPreferences sp;
2. 初始化 sp = this.getSharedPreferences("文件名", 0);//0表明的是私有
3. 获取sp的编辑器 Editor editor = sp.edit();
4. 存储数据 editer.putString() putBoolean putLong
5. 最后一步重要,必定要记得commit() 数据才被保存
package com.itheima.setting; import android.os.Bundle; import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.view.Menu; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.Toast; public class MainActivity extends Activity { //方便的数据保存的api 生成一个xml文件用来保存数据 SharedPreferences sp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //config 是文件名 0 访问模式私有 sp = this.getSharedPreferences("config", 0); CheckBox cb = (CheckBox) findViewById(R.id.cb); //回显数据 boolean status = sp.getBoolean("status", false);//第一个是key 第二个参数是默认值 cb.setChecked(status); cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Toast.makeText(MainActivity.this, "勾选状态:"+isChecked, 0).show(); //获取编辑器i Editor editor = sp.edit(); editor.putBoolean("status", isChecked); editor.commit();//数据库的事务 ,提交数据。把数据保存起来 } }); } }