我是Android新手。在这里,我没有收到任何错误,虽然调试stopAlarm()方法调试器的过程跨越了所有行,但是没有调用AlarmReceiver。
谁能帮我修复它。
更新:
AlarmActivity.java
public void stopAlarm(Context context) {
Intent intent = new Intent(context,AlarmReceiver.class);
intent.setAction("ALARM_OFF");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, mAlarmId, intent,0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
}
答案 0 :(得分:3)
问题出在这里,WakeUpScreen
:
alarmActivity.stopAlarm();
您正在调用stopAlarm()
的{{1}}方法,在这种情况下,AlarmActivity()
是AlarmActivity.this
。我只能假设您在null
中正在做类似的事情:
WakeUpScreen
这是绝对禁止!您无法实例化Android组件(alarmActivity = new AlarmActivity();
,Activity
,Service
,{ {1}})使用关键字BroadcastReceiver
。只有Android才能创建和初始化这些组件,因为在使用这些组件之前,必须先由框架对其进行Provider
设置。
如果要在另一个new
中调用一个方法,则需要确保该方法为Context
。如果将Activity
方法声明为static
,您会发现它抱怨一些事情(例如stopAlarm()
),这就是为什么您需要重写方法以采用{{ 1}}参数,如下所示:
static