Уведомление Android NullPointer - PullRequest
0 голосов
/ 31 июля 2010

Я хочу создать уведомление, и у меня есть этот бит кода, который работал раньше, но теперь дает мне нулевой указатель на последнюю строку.

Есть идеи относительно того, что может вызвать это?

Я знаю, что это может быть трудно с предоставленным мною фрагментом кода, мне просто нужна подсказка о том, что может вызвать это.

   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 ]

1 голос
/ 27 марта 2011

Я получал исключение NullPointerException, когда я вызвал (NotificationManager)getSystemService(NOTIFICATION_SERVICE); из конструктора.

Мне пришлось переместить вызов, чтобы получить 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);
}
0 голосов
/ 14 февраля 2011

Вместо использования

мНм = (NotificationManager) getSystemService (NOTIFICATION_SERVICE);

вы должны добавить префикс NOTIFICATION_SERVICE к Context, который выглядит следующим образом:

мНм = (NotificationManager) getSystemService (Context.NOTIFICATION_SERVICE);

Если вы загляните в документацию по классу Context, вы можете обнаружить, что значением "static final String NOTIFICATION_SERVICE" является "уведомление", но не NOTIFICATION_SERVICE.

Так что это нормально, что вы получаете NullpointerException, когда используете только NOTIFICATION_SERVICE.

0 голосов
/ 31 июля 2010

mNM имеет значение null, поскольку R.string.myString должен существовать, иначе он не будет компилироваться, а уведомление используется раньше, поэтому не может иметь значение null, в противном случае получил бы NPE раньшеПоэтому проверьте мНМ.Или отправьте весь код, где инициализируется mNM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...