切换通知显示

时间:2013-12-08 11:08:12

标签: java android xml

根据具体情况,我会将通知更改为显示,因此我编写了此代码。

要在另一个班级中调用

但是eclipse给了我“不能从Notification类型中对静态方法ShowNot(int)进行静态引用”为什么?我该怎么办?

2 个答案:

答案 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);