我有一个自定义对象的ArrayList,每个对象包含以下3个变量:
private boolean mReminderActivated;
private int mReminderHour;
private int mReminderMinutes;
我正在尝试从该Object内部设置一个Alarm,但是我无法从Object内部调用getSystemService。我只能在活动和碎片中设置警报吗?
答案 0 :(得分:1)
您没有实例化AlarmManager。您可以按如下方式向Android询问现有实例:
AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
其中context
是您当前的Android上下文,通常是您的活动。
请参阅https://developer.android.com/training/scheduling/alarms.html以供参考。
更新 - 根据以下评论,您的问题似乎是如何获取在您的对象中使用的上下文。这是一个建议:
将上下文传递给构造函数中的自定义类。所以你的课将看起来像这样(我称之为Foo,因为你没有提供名字)。我提供了一个setAlarm()
方法,显示了如何获取AlarmManager。
class Foo {
private boolean mReminderActivated;
private int mReminderHour;
private int mReminderMinutes;
public Foo(Context context, boolean mReminderActivated, int mReminderHour, int mReminderMinutes) {
this.context = context;
this.mReminderActivated = mReminderActivated;
this.mReminderHour = mReminderHour;
this.mReminderMinutes = mReminderMinutes;
}
public void setAlarm() {
AlarmManager alarmMgr = (AlarmManager)this.context.getSystemService(Context.ALARM_SERVICE);
}
...
}
然后,在您的活动中,您将按如下方式创建您的Foo对象:
Foo foo = new Foo(this, ....