Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获得其他活动的上下文?_Java_Android_Android Intent - Fatal编程技术网

Java 如何获得其他活动的上下文?

Java 如何获得其他活动的上下文?,java,android,android-intent,Java,Android,Android Intent,我正在使用报警应用程序,删除现有报警时遇到问题。我必须创建相同的挂起意图来删除活动中的警报,该活动列出了我应用程序中的所有警报,但它没有像我预期的那样工作。我想从用于添加警报的活动中获取“上下文” 下面是从ListAddActivity添加警报的代码 private void addAlarm() { final int ALARM_CODE = this.getAlarmCode(1); final int HOUR_OF_DAY = vo.getHour1(); fi

我正在使用报警应用程序,删除现有报警时遇到问题。我必须创建相同的挂起意图来删除活动中的警报,该活动列出了我应用程序中的所有警报,但它没有像我预期的那样工作。我想从用于添加警报的活动中获取“上下文”

下面是从ListAddActivity添加警报的代码

private void addAlarm()
{
    final int ALARM_CODE = this.getAlarmCode(1);
    final int HOUR_OF_DAY = vo.getHour1();
    final int MINUTE = vo.getMinute1();

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

    Calendar calendar = CalendarCreator.getCalendar(HOUR_OF_DAY, MINUTE);
    Intent intent = new Intent(ListAddActivity.this, PushMainActivity.class);

    PendingIntent pendingIntent = PendingIntent.getActivity(
            ListAddActivity.this, ALARM_CODE, intent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY,
            pendingIntent);
}
以下是从ListMainActivity中删除定时报警的代码

private void removeAlarm(int number)
{
    final int alarmCode = AlarmCodeCreator.CreateNum(1, clickedPosition, 0);
    System.out.println(alarmCode);
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(getApplicationContext(),
            PushMainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(
            getApplicationContext(), alarmCode, intent, 
            PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);
}

如您所见,我制定了自己的算法来创建alarmCode,因此我可以检索它,并且也有相同的标志。然而,获取相同的“上下文”是我正在努力解决的问题。

这与上下文无关。您计划的目的是使用getActivity创建的。这与使用getBroadcast创建的意图不同。不能使用后者来取消前者

(编辑以添加代码)


使用ListMainActivity.this代替getApplicationContext();当我将代码更改为ListMainActivity时,应该如何删除此报警?创建相同的意图!编辑答案以提供明显的答案。
Intent intent = new Intent(
    getApplicationContext(),
    PushMainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
    ListAddActivity.this,
    ALARM_CODE,
    intent,
    PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);