SharedPreferences用来在本地保存用户习惯参数,例如,QQ的登陆框和密码,当我们下次启动时他会将上次登录的信息自动填入输入框中。
在Android中,其实它是通过创建一个xml文件存储的。下面讲解如何用SharedPreferences来保存这些参数:
1.import android.content.Context
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
SharedPreferences对象可以通过Context.getSharedPreferences()方法来获取,这个方法接受两个参数,一个是创建SharedPreferences的那个名字,也就是用于指定用于存放参数的xml文件名称。这个参数不能指定xml后缀。第二个参数是对文件的操作模式,一般用户的参数模式是不需要其他程序访问,所以指定为Context.MODE_PRIVATE。
然后需要用到编辑器editor,通过编辑器对象存放数据。
调用editor的put(arg0 , arg1); //arg0为参数名称,arg1为参数值
不同的参数类型需要调用不同的方法: editor.putString() 、 editor.putInt()
此时这些参数还存在内存中,没有真正保存到文件中。此时需要调用editor.commit()方法将数据存放至文件。
至此,SharedPreferences数据存储工作已经完毕,下面来介绍一下如何在程序中读取这些存放到xml文件中的数据:
这里有两种方法:
1.自定义getPreferences方法返回Map类型的参数:
1 /** 2 * 获取SharedPreferences值 3 */ 4 public Map<String , String> getshared(){ 5 SharedPreferences preferences = context.getSharedPreferences("shared", Context.MODE_PRIVATE); 6 Map<String , String> reshared = new HashMap<String , String>(); 7 8 reshared.put("name", preferences.getString("name", ""));
//第二个参数为:如果xml文件中没有设置过此信息,则读取第二个参数为默认值 9 10 reshared.put("age", String.valueOf(preferences.getInt("age", 0))); 11 12 return reshared; 13 }
这种方法是手动获取xml文件中数据的值并返回
2. 通过Activity.getPreferences()方法获取Preferences对象:
SharedPreferences settings = getPreferences(Activity.MODE_PRIVATE);
name = settings.getString("name" , "fanchangfa");
//这种方法系统会根据上次用户定义的xml文件自动从中提取参数值。
下面介绍如何向sharedPreferences中写入数据,即将我们的配置信息放入xml文件中:
1 /** 2 * 设置SharedPreferences值 3 */ 4 public void setshared(String name , int age){ 5 //不能指定文件扩展名,默认使用xml 6 SharedPreferences preferences = context.getSharedPreferences("shared", Context.MODE_PRIVATE);
//系统会创建默认shared.xml文件
7 Editor editor = preferences.edit(); //将数据保存到Editor集合中 8 9 editor.putString("name", name); 10 editor.putInt("age", age); 11 12 editor.commit(); //提交数据——将数据保存到xml文件中 13 }
那么介绍了如何存取xml配置文件,下面我们将演示如何通过具体的方法读取文件:
1 preferences = new sharedexample(this.getApplicationContext()); 2 3 show_name = (EditText) this.findViewById(R.id.txt_name); 4 show_age = (EditText) this.findViewById(R.id.txt_age); 5 6 btn_save = (Button) this.findViewById(R.id.btn_save); 7 8 /* 9 * 获取SharedPreferences中的值并设为默认文本框显示值 10 */ 11 12 Map<String , String> def_value = preferences.getshared(); //上面我们自定义的获取配置信息的函数 13 14 show_name.setText(def_value.get("name")); 15 16 show_age.setText(def_value.get("age"));
保存:
1 /** 2 * 在布局文件中设置点击按钮执行save()方法。 3 * @param v 4 */ 5 public void save(View v){ 6 String name = show_name.getText().toString(); 7 String age = show_age.getText().toString(); 8 preferences.setshared(name , Integer.valueOf(age)); 9 Toast.makeText(this, "保存成功", 1).show(); 10 }
自此,就ok了,可以运行看一下效果:
下次打开此程序会默认显示我们上次配置的信息。
掌握sharedpreferences对Android项目的开发也很有用。
学习阶段,如有异议的地方,期待交流..