当前位置: 首页 > 知识库问答 >
问题:

BroadcastReception中的NullPointerException

公孙俭
2023-03-14

我对Android开发完全陌生,所以如果我问的很简单,我先道歉,过去几个小时我一直在谷歌上搜索,运气不好。

在我的 MainActivity 中,我引用了警报接收器.class意图中,然后进入挂起的接收器,最后将其设置为警报管理器。我这样做是为了设置警报,这工作正常,当警报被触发时,异常发生。

    Intent intent = new Intent(ourContext, AlarmReceiver.class);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(ourContext, 666, intent, 0);

    AlarmManager alarmManager = (AlarmManager) ourContext.getSystemService(Context.ALARM_SERVICE);

    alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);

然后在AlarmReceiver.class中扩展BroadcastReceiver,并进行SDK调用。这部分代码在闹钟触发时运行,也就是说当选定的时间临近时,运行这段代码。

public void onReceive(Context arg0, Intent arg1) {

    SDK.sendNotification(arg0, new Notification("alarm", "Top Line", "Bottom Line"), new SendNotificationListener() {

        @Override
        public void onSuccess(String s) {
            Log.d("success", s);
        }

        @Override
        public void onFailed(String s) {
            Log.d("fail", s);
        }
    });
}

SendNotify接受3个变量,一个上下文、一个通知和一个NotificationListener。

我能够确定的是,我非常确定是NotificationListener出了问题并导致了错误。

下面是堆栈轨道:

Process: com.example.timer:remote, PID: 27665
    java.lang.RuntimeException: Unable to start receiver com.example.timer.AlarmReceiver: java.lang.NullPointerException
            at android.app.ActivityThread.handleReceiver(ActivityThread.java:2452)
            at android.app.ActivityThread.access$1700(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5146)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.example.imer.AlarmReceiver.onReceive(AlarmReceiver.java:21)
            at android.app.ActivityThread.handleReceiver(ActivityThread.java:2445)
            at android.app.ActivityThread.access$1700(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5146)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
            at dalvik.system.NativeStart.main(Native Method)

这是第21行:

SDK.sendNotification(arg0, new Notification("alarm", "Top Line", "Bottom Line"), new SendNotificationListener() {

共有1个答案

赵炯
2023-03-14

如果这里抛出异常:

  SDK.sendNotification(arg0, 
                       new Notification("alarm", "Top Line", "Bottom Line"), 
                       new SendNotificationListener() {

那么唯一可能的解释就是< code>SDK是< code>null。请检查它是否已正确初始化;即已经为其分配了非空值。(并且检查你没有多重声明...并且其中一些没有初始化。)

你把这个作为(假定的)反证贴了出来。

  SDK.initiate(getActivity(), "DEVCODE", new String[] { Scope }, 
               new AuthListener() {

>

  • 这不会将<code>SDK</code>设置为非空值。它不会对<code>SDK</code>设置(提示:赋值)任何内容。

    (但假设,如果SDK是一个变量,它将给出一个NPE,它是null并且启动是一个实例方法。)

    该语句可能无法执行。

    即使< code>SDK变量不是< code>null,也可能有另一个< code>SDK声明。

    总之,那证明不了什么。

  •  类似资料:
    • 当尝试测试Java客户端的方法时,我收到了一个关于RepoService saveAndFlush方法的NPE。 然后进行我期望得到一个异常的测试 然后,在来自ClientX的这条线路上使用NPE进行测试失败 有人知道为什么serviceX或repoX是空的/得到NPE吗?

    • 问题内容: 我正在使用Android兼容性库,偶尔会感到奇怪: 显然,我在做 一些 错误的操作,以允许它进入可能会像这样崩溃的状态,但是我不知道该怎么办。在相关的代码中没有提供我任何线索。我猜是某种在代码中的那一点?但这似乎是不可能的,因为该活动已经在屏幕上了,并且我没有在其中添加任何片段- 只需在中进行切换即可。 问题答案: 好的,在将我的头撞到砖墙上一段时间后,我发现这与我的片段的声明直接相关

    • 我我试图建立我在这里找到的网站,当我运行应用程序时,我得到了 创建名为'dataSource'的bean时出错org.o7planning.springmvcshoppingcart.config.Application ContextConfig:通过工厂方法实例化Bean失败;嵌套异常org.springframework.beans.BeanInstantiationException:实例

    • 我不知道这个,但我得到了以下路线的stacktrace: 有什么明显的问题吗?

    • 问题内容: 我一直在获取NullPointerException(请参见下文)。在C#中一切正常,但是在android中会坏吗? arrDBNumbers已满,应该执行代码并计算#1,#2,#3的数量,依此类推,直到#49,将arrFreq [i] [1]加1以将数字的总数填充到arrFreq。 它遍历if语句,直到k到达6,其中arrDBNumbers [0] [6]为1,然后在if语句内跳转然

    • 我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?