Android中SharedPreferences出现NullPointerException的解决办法【转】 - 花瓣15度

guanxi 2021-08-01 原文


Android中SharedPreferences出现NullPointerException的解决办法【转】

这几天写Service组件的时候,莫名其妙老出现NullPointerException异常,主要经过是这样的:在Activity中创建Preferences文件,然后在Service中使用这个文件,出错的源代码如下:

复制代码
1 import android.app.Service;
2  import android.content.Intent;
3  import android.content.SharedPreferences;
4  import android.content.SharedPreferences.Editor;
5 import android.os.IBinder;
6 import android.preference.PreferenceManager;
7
8 publicclass DemoService extends Service {
9
10 privatestaticfinal String MONITOR_RUN_STATE =MonitorRunState;
11 private SharedPreferences preferences = 
      PreferenceManager.getDefaultSharedPreferences(this);
12
13 @Override
14 public IBinder onBind(Intent arg0) {
15 returnnull;
16 }
17
18 @Override
19 publicvoid onCreate() {
20 Editor editor = preferences.edit();
21 editor.putBoolean(MONITOR_RUN_STATE, true);
22 editor.commit();
23 super.onCreate();
24 }
25 }
复制代码

执行的话会在11行出现空指针异常。

结果google半天后发现问题所在, PreferenceManager.getDefaultSharedPreferences(this)这句话不应该放在初始化Service类或子类的成员变量中,也就是说,应该把它放在onCreate()函数中,上面代码可以改成这样:

复制代码
import android.app.Service;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.IBinder;
import android.preference.PreferenceManager;

publicclass DemoService extends Service {

privatestaticfinal String MONITOR_RUN_STATE =MonitorRunState;
private SharedPreferences preferences = null;

@Override
public IBinder onBind(Intent arg0) {
returnnull;
}

@Override
publicvoid onCreate() {
preferences
= PreferenceManager.getDefaultSharedPreferences(this);
Editor editor
= preferences.edit();
editor.putBoolean(MONITOR_RUN_STATE,
true);
editor.commit();
super.onCreate();
}
}

复制代码

其中红字是更改过的地方。

不光是Service,Activity也应该这样,否则都会出现异常

发表于
2013-04-08 14:16 
花瓣15度 
阅读(295
评论(0
编辑 
收藏 
举报

 

版权声明:本文为guanxi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/guanxi/archive/2013/04/08/3007388.html

Android中SharedPreferences出现NullPointerException的解决办法【转】 - 花瓣15度的更多相关文章

  1. 如何保护好我们的比特币(bitcoin) – liuhaitao

    如何保护好我们的比特币(bitcoin) 转自:http://8btc.com/thread-819-1-1. […]...

  2. 国内生物医学工程届著名学者 – burellow

    国内生物医学工程届著名学者 1. 西安交通大学,万明习:http://gr.xjtu.edu.cn:8080/ […]...

  3. eclipse / ADT(Android Develop Tool) 一些方便的初始设置

      1.设置编辑窗口的背景色eclipse的主编辑窗口的背景色,默认为白色,个人感觉太亮,推荐保护视力的“墨绿 […]...

  4. 要鲧?还是要禹?中华民族生存大问题!(转自四川新闻网) – 舒密

    要鲧?还是要禹?中华民族生存大问题!(转自四川新闻网) 在中国历史上,鲧是水害工程的代表人物,禹是水利工程的代 […]...

  5. 办公自动化和轻量级ERP的选择 – Office SharePoint

      不止一个朋友问我企业内部如何构建OA相关的问题,其实很简单,SharePoint,但一个非IT专业人士如何 […]...

  6. 第四天进度 – 2018/7/11

    第四天进度 今天是星期一,满课一共九节课,没有太多时间写代码,努力的想把前端完善了,前端呢,也不是太好写,想调 […]...

  7. 时间戳(timestamp) – HackerVirus

    时间戳(timestamp) Microsoft帮助中描述如下:timestamp timestamp 这种数 […]...

  8. javascript 3d网页 示例 ( three.js 初探 七)

    1 完整代码下载   https://pan.baidu.com/s/1JJyVcP2KqXsd5G6eaYp […]...

随机推荐

  1. c# 深入探索之CLR

    概念: CLR : 公共语言运行时(Common Language Runtime) 是一个可由多种编程语言使 […]...

  2. TCP/UDP端口列表

    TCP/UDP端口列表 备用 端口状态颜色图例 以下方块,以如下颜色和标签,标明了端口的状态: 官方 应用与端 […]...

  3. 一文带你读懂宽带上下行速率不对称的原因

    一文带你读懂宽带上下行速率不对称的原因 转:http://www.sohu.com/a/228450528_1 […]...

  4. 阿里云到底有多强大?专业人士告诉你真相!

    阿里云到底有多强大?专业人士告诉你真相! 可能不做网站后台申请、注册系统的人并不清楚,阿里云对于一个网站、ap […]...

  5. Mac macOS HP打印机添加教程驱动软件下载

    Mac macOS HP打印机驱动软件下载 Mac 在使用 Winodws 打印机时,需要 macOS 特定的 […]...

  6. 强制清除交换机端口所有配置

    遇到无法修改和删除端口配置信息是直接强制清除该端口所有配置 clear configuration inter […]...

  7. AdminLTE 前端开源框架介绍 – jack_Meng

    AdminLTE 前端开源框架介绍 1.AdminLTE介绍 AdminLTE是一款建立在bootstrap和 […]...

  8. 蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践

    http://www.infoq.com/cn/articles/technical-architecture […]...

展开目录

目录导航