根据具体情况,我会将通知更改为显示,因此我编写了此代码。
要在另一个班级中调用
但是eclipse给了我“不能从Notification类型中对静态方法ShowNot(int)进行静态引用”为什么?我该怎么办?
答案 0 :(得分:1)
MostraNotifica (int Id)
不是static
。你应该做像
Notifica notifica = new Notifica(context);
notifica.MostraNotifica(Notifica.NOTIFICA);
答案 1 :(得分:1)
您正在调用非静态方法(public void MostraNotifica(int Id)
),就像它是静态方法一样。
我会把这个类变成一个单例,这样你只需要初始化一次,但可以使用你喜欢的方法。
示例单身人士:
public enum Notifica {
INSTANCE;
NotificationManager mNotificationManager;
NotificationCompat.Builder notificationBuilder;
Context context;
public void init(Context context) {
if (mNotificationManager == null) {
this.context = context;
mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// Do any other initializations you need here
}
}
public void MostraNotifica (int Id) {
switch(Id)
{
case NOTIFICA:
notificationBuilder.setContentTitle("Text1");
notificationBuilder.setContentText("Text1");
mNotificationManager.notify(NOTIFICA, notificationBuilder.build());
break;
case NOTIFICA2:
notificationBuilder.setContentTitle("Text2");
notificationBuilder.setContentText("Text2");
mNotificationManager.notify(NOTIFICA2, notificationBuilder.build());
break;
}
notificationBuilder.setWhen(System.currentTimeMillis());
notificationBuilder.setSmallIcon(R.drawable.ic_launcher);
notificationBuilder.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_LIGHTS );
}
您将初始化并使用此单例:
Notifica.INSTANCE.init(this);
Notifica.INSTANCE.MostraNotifica(1);