我有两个活动
在活动A中,我设置了一个报警
public static ActivityA contextA;
Intent intent = new Intent(contextA, AlarmReciever.class);
intent.setAction(MY_ACTION);
AlarmManager manager = (AlarmManager) contextA
.getSystemService(Context.ALARM_SERVICE);
intent.putExtra("TITLE", triggerTitle);
PendingIntent ShotSender = PendingIntent.getBroadcast(contextA,
0, intent, 0);
manager.setRepeat(AlarmManager.RTC_WAKEUP, fireTime, fireTime*2 +
system.currentTimeMillis(), ShotSender);
在活动B中,我想取消报警:
Intent intent = new Intent(ActivityA.contextA, AlarmReciever.class);
intent.setAction(MY_ACTION);
AlarmManager manager = (AlarmManager) ActivityA.contextA
.getSystemService(Context.ALARM_SERVICE);
intent.putExtra("TITLE", triggerTitle);
PendingIntent ShotSender = PendingIntent.getBroadcast(ActivityA.contextA,
0, intent, 0);
manager.cancel(ShotSender);
但它抛出了一个异常:NullPointerException
发生在活动B:中
Intent intent = new Intent(ActivityA.contextA, AlarmReciever.class);
我的代码有问题吗?
创建Intent时需要使用ActivityB的上下文。将ActivityB中的代码更改为:
Intent intent = new Intent(this, AlarmReciever.class);
intent.setAction(MY_ACTION);
AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
intent.putExtra("TITLE", triggerTitle);
PendingIntent ShotSender = PendingIntent.getBroadcast(this, 0, intent, 0);
manager.cancel(ShotSender);