当前位置: 代码迷 >> Android >> SharedPreferences空指针有关问题
  详细解决方案

SharedPreferences空指针有关问题

热度:5   发布时间:2016-04-28 04:14:17.0
SharedPreferences空指针问题!
我在程序中用到:
    SharedPreferences spConfig = getSharedPreferences("config",MODE_PRIVATE);
    Double lat=Double.valueOf(spConfig.getString("lat","22.22883"));
    Double lng=Double.valueOf(spConfig.getString("lng", "113.521121"));
运行时提示:
08-08 02:15:40.497: E/AndroidRuntime(15362): Caused by: java.lang.NumberFormatException: Invalid double: "null"
08-08 02:15:40.497: E/AndroidRuntime(15362):  at java.lang.StringToReal.invalidReal(StringToReal.java:63)
08-08 02:15:40.497: E/AndroidRuntime(15362):  at java.lang.StringToReal.parseDouble(StringToReal.java:269)
08-08 02:15:40.497: E/AndroidRuntime(15362):  at java.lang.Double.parseDouble(Double.java:295)
08-08 02:15:40.497: E/AndroidRuntime(15362):  at java.lang.Double.valueOf(Double.java:332)
08-08 02:15:40.497: E/AndroidRuntime(15362):  at com.zhushisoft.MyPoiSearch.onCreate(MyPoiSearch.java:88)
第88行正是Double lat=Double.valueOf(spConfig.getString("lat","22.22883"));
回头检查,发现这个lat,lng在某种情况下文件内并不一定有写入,如果有写入时程序正常,但出错的时候发现是没写入,就是说config.xml文件中没有这个name,所以报空指针?
我的疑问是:这一句的第二个参数,不是指在读取失败时给的默认值吗?系统为什么会报错?
请各位解答一下,谢谢!
------解决方案--------------------
你看看spConfig.getString("lat","22.22883")是不是返回了null这个字符串
------解决方案--------------------
这个值应该是存在的  只不过是”null“   你的默认值就无效了
------解决方案--------------------
getString确实是取不到的时候有默认值,所以你看看会不会存了个"null"的字符串在里面
------解决方案--------------------
只有当字符串是""的时候才会触发默认值。null是不会的。
  相关解决方案