Android SharedPreferences

        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项目的开发也很有用。

学习阶段,如有异议的地方,期待交流..

posted @ 2012-08-21 20:22  非著名程序师  阅读(646)  评论(0编辑  收藏  举报