SharedPreferences详解、context.getSharedPreferences(string name,int mode) 空指针异常

时间:2024-03-17 11:15:51

一、概述

  SharedPreferences(简称SP)是Android中很常用的数据存储方式,SP采用key-value(键值对)形式,主要用于轻量级的数据存储,尤其适合保存应用的配置参数,但不建议使用SP来存储大规模的数据,可能会降低性能。
  SP采用xml文件格式来保存数据,改文件所在目录位于/data/data/shared_prefs/。

二、使用

1.得到SharedPreferences对象

private SharedPreferences mSharedPreferences;
private final static String PREFRENCE_FILE_KEY = "com.zhangmiao.shared_preferences";
mSharedPreferences = getSharedPreferences(PREFRENCE_FILE_KEY, MODE_PRIVATE);

2.添加数据

        final SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.putInt("id",1);
        editor.putString("name","小熊");
        editor.putInt("age",24);
        editor.commit();

3.获取数据

        TextView textView = (TextView)findViewById(R.id.text);
        String message = "id = " + mSharedPreferences.getInt("id",-1)
                + ",name = " + mSharedPreferences.getString("name","无")
                + ",age = " + mSharedPreferences.getInt("age",-1)+"。";
        textView.setText(message);

4.查看生成的sharedpreferences.xml文件

(具体操作:真机连接电脑,eclipse项目右键运行程序,程序运行起来之后。打开cmd,执行如下命令)

我使用的是adb命令查看的文件,命令如下:(系统是window10)
adb shell

run-as com.zhangmiao.myapplication(应用包名)【在清单文件中查看包名】

cd shared_prefs(进入到这个目录)

ls(查看xml文件的名称)

如代码中定义为:public final static String CONN_M = "com.my.CONN_M";

cat com.my.CONN_M.xml(查看xml文件)

SharedPreferences详解、context.getSharedPreferences(string name,int mode) 空指针异常

********************************************************************

context.getSharedPreferences(string name,int mode) 空指针异常,已解决。

 Java Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1、首先,在程序启动之后的主界面,初始化
public static int idGet = 0;//【全局变量】*********************初始化idGet
SharedPreferences preferences;
2、指定xml名称
public final static String SELECTED_ID = "com.my.SELECTED_ID";//指定xml名称

3、单独写一个初始化方法
//**************************************初始化SharedPreferences方法
重点:【获取数据防止空指针,需将此方法放到有界面的java类中,如程序启动的主界面,没有界面的java类想获取数据,可以调用上面主界面的isGet即可】
private void INIId()
{
    preferences = this.getSharedPreferences(com.Conn.SELECTED_ID, Context.MODE_PRIVATE); //前面加this【实例化SharedPreferences操作】
    idGet = preferences.getInt(com.Conn.SELECTED_ID, 0);
}

3、在oncreate中,调用INIId()来初始化SharedPreferences,得到数据

4、添加一个按钮监听事件,每点击一次按钮,重新获取一次SharedPreferences,重新为idGet赋值一次。

5、其余地方如想使用这个SharedPreferences中的idGet,直接调用主界面的SharedPreferences以及idGet即可。
【或者可以再次使用INIId()方法,进行重新获取数据】