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

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

  • 相关阅读:
    JS高级——eval
    JS高级——Object.prototype成员
    JS高级——原型链
    JS高级——逻辑中断
    移动web——bootstrap媒体对象
    移动web——bootstrap如何修改原组件
    移动web——bootstrap响应式轮播图
    Leetcode题解
    位运算实现四则运算(C++实现)
    扫码登陆原理
  • 原文地址:https://www.cnblogs.com/fanchangfa/p/2649663.html
Copyright © 2020-2023  润新知