前几天在网上看了一个仿QQ的代码,我发现有一个问题,就是在activity里面需要不断的使用BroadcastReceiver 去接收收到的msg,但是有时候传过来的msg有可能是空的,因为可能是从后台转过来的,这样的话,使用String stringExtra = intent.getStringExtra("msg");就会报空指针的错误,然后直接强制被关闭任务了。这样应该如何解决?
调试欢乐多
这个没有"msg"会抛出null exception? 不是吧我理解你是说String stringExtra这个为null?如果这样那就处理下就好了
public void onReceive(Context context, Intent intent) {
TranObject msg = (TranObject) intent
.getSerializableExtra(Constants.MSGKEY);
if (msg != null) {//如果不是空,说明是消息广播
// System.out.println("MyActivity:" + msg);
getMessage(msg);// 把收到的消息传递给子类
} else {//如果是空消息,说明是关闭应用的广播
close();
}
}
};
这个是广播的代码,可是在实例化msg的时候就会报空指针的错误了,因为我从后台切换过来的时候是没有传msg的。但是刚开始登入的时候也传msg的,发消息也是传的,就是在后台切换过来的时候,其实是没有带参数的。
@Override
public void onReceive(Context context, Intent intent) {
TranObject msg = (TranObject) intent
.getSerializableExtra(Constants.MSGKEY);
if (msg != null) {//如果不是空,说明是消息广播
// System.out.println("MyActivity:" + msg);
getMessage(msg);// 把收到的消息传递给子类
} else {//如果是空消息,说明是关闭应用的广播
close();
}
}
};
这个是广播的代码,可是在实例化msg的时候就会报空指针的错误了,因为我从后台切换过来的时候是没有传msg的。但是刚开始登入的时候也传msg的,发消息也是传的,就是在后台切换过来的时候,其实是没有带参数的。
@Override
public void onReceive(Context context, Intent intent) {
TranObject msg = (TranObject) intent
.getSerializableExtra(Constants.MSGKEY);
if (msg != null) {//如果不是空,说明是消息广播
// System.out.println("MyActivity:" + msg);
getMessage(msg);// 把收到的消息传递给子类
} else {//如果是空消息,说明是关闭应用的广播
close();
}
}
};
这个是广播的代码,可是在实例化msg的时候就会报空指针的错误了,因为我从后台切换过来的时候是没有传msg的。但是刚开始登入的时候也传msg的,发消息也是传的,就是在后台切换过来的时候,其实是没有带参数的。
这段代码应该不会报空指针异常才对,除非intent是空的。
或者是不传值时,打印出来的stringExtra 是null