android - 通知通知Android时空对象引用错误 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()'

标签 android

所以,我试图运行我的应用程序,它应该在第一次运行后显示通知。但是,它给了我这样的错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at android.app.Notification$Builder.<init>(Notification.java:1951)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at android.support.v4.app.NotificationCompatApi21$Builder.<init>(NotificationCompatApi21.java:68)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at android.support.v4.app.NotificationCompat$NotificationCompatImplApi21.build(NotificationCompat.java:759)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at android.support.v4.app.NotificationCompat$Builder.build(NotificationCompat.java:1559)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at apps.skripsi.petvac.navigationmenu.MainMenu.createButtonNotification(MainMenu.java:383)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at apps.skripsi.petvac.navigationmenu.MainMenu$DataBinatangOperation.onPostExecute(MainMenu.java:235)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at apps.skripsi.petvac.navigationmenu.MainMenu$DataBinatangOperation.onPostExecute(MainMenu.java:145)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at android.os.AsyncTask.finish(AsyncTask.java:632)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at android.os.AsyncTask.access$600(AsyncTask.java:177)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5253)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
12-10 12:01:03.512 3132-3132/apps.skripsi.petvac E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)

这是我显示通知的代码

public void createButtonNotification(Context context, String title, String content, String idb, String idv) {
    // Prepare intent which is triggered if the  notification button is pressed


    Intent intent = new Intent(getActivity(), MainPetInformation.class);
    intent.putExtra("IDBIN", idb);
    intent.putExtra("IDVAK", idv);


    Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

    int IntID = Integer.valueOf(idb);

    PendingIntent IntentAccept = PendingIntent.getActivity(getActivity(), IntID, intent, 0);

    PendingIntent IntentCancel = PendingIntent.getActivity(getActivity(), IntID, intent, 0);
    IntentCancel.cancel();


    // Building the notifcation
    NotificationCompat.Builder nBuilder = new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.logo) // notification icon
            .setContentTitle(title) // notification title
            .setContentText(content)
            .setSound(uri)// content text
            .addAction(R.drawable.accept, "Accept", IntentAccept) // accept notification button
            .addAction(R.drawable.cancel, "Cancel", IntentCancel); // cancel notification button


    mNotificationManager.notify(IntID, nBuilder.build());


}

错误表明它发生在这一行:

mNotificationManager.notify(IntID, nBuilder.build());

请帮忙:(

最佳答案

您应该在调用此行之前初始化通知管理器。

mNotificationManager.notify(IntID, nBuilder.build());

试试这个

mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
mNotificationManager.notify(IntID, nBuilder.build());

快乐编码:)

关于android - 通知通知Android时空对象引用错误 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34194203/

相关文章:

Android Studio 突然无法解析符号 R

android - Intellij 13 在尝试将 Android 应用程序安装/启动到 USB 设备时出错

android - 使用未发布的应用测试 Android 应用内购买

php - 使用 php 向 Google Cloud Messaging 发送通知给我未经授权的错误 401

android - 模拟位置在谷歌地图上不起作用

Android: AudioRecord.read() 调用后返回数组填充 "0"

android - 如何控制Listview的Fling Action

android eclipse 使用地址而不是纬度和经度来启动 map 的 Intent

android - 在服务中为 SCREEN_ON/SCREEN_OFF 注册广播接收器

java - proto buffer 的局限性——加载部分数据和共享字符串