好,所以我遵循了一个教程并编写了以下代码:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationHelper notificationHelper = new NotificationHelper(context);
NotificationCompat.Builder nb = (NotificationCompat.Builder) NotificationHelper.getChannelNotification();
NotificationHelper.getManager().notify(1, nb.build());
}
}
getChannelNotification()用红色加下划线,并告诉我“不能从静态上下文中引用非静态方法'getChannelNotification()'”
我将方法设为静态,现在它通过不同的代码告诉我相同的消息:
public static NotificationCompat.Builder getChannelNotification() {
return new NotificationCompat.Builder(getApplicationContext(), channelID)
.setContentTitle("Alarm!")
.setContentText("Your AlarmManager is working.")
.setSmallIcon(R.drawable.alert);
}
这次,getApplicationContext()代码用红色下划线标出,我得到了 “不能从静态上下文中引用非静态方法'getChannelNotification()'”。因此,要么我将代码设为静态,而getApplicationContext()变为红色下划线,要么我不使其变为静态,而
getChannelNotification()带红色下划线并带有相同的错误消息。
我关注的是YouTube教程,我对静态与非静态以及如何解决此代码一无所知。
代码的getManager()部分也发生了同样的事情。它显示了相同的错误,因此当我将代码更改为静态时,另一段代码现在会收到该错误。这个:
public static NotificationManager getManager() {
if (mManager == null) {
mManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
}
return mManager;
}
我在上面添加了静态内容,现在getSystemService突出显示为红色,并显示错误“无法从静态上下文中引用非静态方法'getSystemService(java.lang.String)'”