我有一个java类。 AlarmReceiver.java 我有AddReminderActivity,在其中有一个我直接从AlarmReceiver.java调用的公共方法。请记住,在这种情况下,不会调用(AddReminderActivity onCreate。 在该特定方法中,我使用的是getApplicationContext,而我正在获取NullPointer ........ 我可以在不调用AddReminderActivity的情况下使用任何方法吗? AddReminderActivity内部的方法: 代码:
modal-root
AlarmReceiver.java:
document.body
答案 0 :(得分:2)
要发送通知,您需要application context
。您遵循的方法是错误的,因为为活动创建实例应该由OS完成。然后只有您将使用getApplicationContext
方法来应用上下文实例。
我不清楚。 我可以在不调用AddReminderActivity的情况下使用任何方法吗?
根据您的评论,我了解到您想从AlarmReciever
发送通知。
根据我的理解,回答您的问题:
将notifyInAdv
方法设为静态,并将上下文作为参数传递。
从AlarmReciever
调用与notifyInAdv(recieverContext, .....your other params......)
相同的方法。
public static void notifyInAdv(Context context, int reminderId, Intent intent) {
if (notificationDay < 1 || intent != null) {
if (intent != null) {
mCalendar.set(Calendar.DAY_OF_MONTH, mDay);
} else {
mCalendar.set(Calendar.DAY_OF_MONTH, mDay - notificationDay);
}
mCalendar.set(Calendar.MONTH, mMonth);
mCalendar.set(Calendar.YEAR, mYear);
mCalendar.set(Calendar.HOUR_OF_DAY, mHour);
mCalendar.set(Calendar.MINUTE, mMinute);
mCalendar.set(Calendar.SECOND, 0);
new AlarmReceiver().createExactAlarm(context, mCalendar, reminderId);
}
}
像下面一样在接收器中使用方法
AddReminderActivity.notifyInAdv(alarmReceiverContext, mReceivedID, intent);
这应该有效。
但这不是最佳实践。
创建一些Utility
类,并放置此类静态方法(例如,发送通知,将日期的通用字符串和日期发送到字符串解析等),以从其他需要的地方发送通知和该方法。您的应用程序。