Android通知NullPointer

时间:2010-07-31 16:14:19

标签: android nullpointerexception notifications

我想创建一个通知,我有一些以前工作的代码,但现在在最后一行给我一个空指针。

关于可能导致这种情况的任何想法?

我知道我提供的这些代码可能很难,我只需要提示一下可能导致这种情况的原因。

   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);
}

3 个答案:

答案 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是正常的。