2013-12-08 45 views
0

根據情況我會更改通知顯示,所以我寫了這段代碼。切換通知顯示

要調用它在另一個類使用

但是Eclipse給我「不能讓一個靜態引用從類型通知的非靜態方法ShowNot(INT)」爲什麼?我該如何修復?

回答

1

MostraNotifica (int Id)不是static。你應該這樣做

Notifica notifica = new Notifica(context); 
notifica.MostraNotifica(Notifica.NOTIFICA); 
+0

謝謝,它的工作原理! –

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