0

私は2つの活動を持っています

アクティビティ 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);

私のコードのどこかが間違っていますか?

4

1 に答える 1

1

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);
于 2012-08-23T06:58:38.053 に答える