我想创建一个通知,我有一些以前工作的代码,但现在在最后一行给我一个空指针。
关于可能导致这种情况的任何想法?
我知道我提供的这些代码可能很难,我只需要提示一下可能导致这种情况的原因。
private void showNotification() {
CharSequence text = getText(R.string.myString);
Notification notification = new Notification(R.drawable.playbackstart, text,
System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this, MyActivity.class), 0);
notification.setLatestEventInfo(this, getText(R.string.myString),
text, contentIntent);
mNM.notify(R.string.myString, notification);
}
答案 0 :(得分:1)
当我从构造函数中调用(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
时,我收到了NullPointerException。
我必须移动电话才能将NotificationManager
转到onStart
电话。
@Override
public void onStart(Intent intent, int startId) {
try {
notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
} catch (Exception e) {
Log.e(TAG, e.toString());
}
super.onStart(intent, startId);
}
答案 1 :(得分:0)
mNM为null,因为R.string.myString必须存在,否则它将不会编译,并且之前使用通知,因此不能为null,否则会更早获得NPE。因此,请检查mNM。或者发布mNM初始化的整个代码。
答案 2 :(得分:0)
而不是使用
mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
你应该在NOTIFICATION_SERVICE前加上上下文,如下所示:
mNM = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
如果查看Context类的文档,可以发现“static final String NOTIFICATION_SERVICE”的值是“notification”,而不是NOTIFICATION_SERVICE。
因此,仅使用NOTIFICATION_SERVICE时会出现NullpointerException是正常的。