在没有onCreate的情况下从另一个Java类调用MainActivty的方法

时间:2019-04-13 18:14:52

标签: android

我有一个java类。 AlarmReceiver.java 我有AddReminderActivity,在其中有一个我直接从AlarmReceiver.java调用的公共方法。请记住,在这种情况下,不会调用(AddReminderActivity onCreate。 在该特定方法中,我使用的是getApplicationContext,而我正在获取NullPointer ........ 我可以在不调用AddReminderActivity的情况下使用任何方法吗? AddReminderActivity内部的方法: 代码:

modal-root

AlarmReceiver.java:

document.body

1 个答案:

答案 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类,并放置此类静态方法(例如,发送通知,将日期的通用字符串和日期发送到字符串解析等),以从其他需要的地方发送通知和该方法。您的应用程序。