2014-02-06 71 views
0

我在我的應用程序中有一個通知。 但是,在不同的活動中,我會在通知欄中顯示不同的圖標。 我只是想知道如何在語法上寫這個。使用變量代替R.drawable

Notification notification = new Notification.Builder(this) 
       .setSmallIcon(R.drawable.card_red) 
       .setWhen(System.currentTimeMillis()).setTicker(message) 
       .setContentTitle("Real Madrid 2:1 Barcelona") 
       .setContentText(message).setContentIntent(pIntent) 
       .getNotification(); 

我具有被保持事件類型的變量 - 事件= 5; if(event == 5)icon = card_red; 我必須將該圖標變量放入通知創建者。

回答

2

這裏的簡單開關盒有什麼問題? switch上的事件類型變量,並返回相應的drawable ID。然後將該ID傳入setSmallIcon

int drawable = -1; 
switch(eventType) { 
    case 5 : drawable = R.drawable.card_red; break; 
    case 6 : drawable = R.drawable.card_blue; break; 
    //Other cases as appropriate 
} 
+0

謝謝!我只是在Java世界中很新穎。 –

2
private int[] icons = new int[] {R.drawable.card_red, R.drawable.card_blue, R.drawable.card_black};  

您應該正確地將圖標的索引映射到數組中。

Notification notification = new Notification.Builder(this) 
       .setSmallIcon(icons[event]) 
       .setWhen(System.currentTimeMillis()).setTicker(message) 
       .setContentTitle("Real Madrid 2:1 Barcelona") 
       .setContentText(message).setContentIntent(pIntent) 
       .getNotification(); 
1
int drawableId = -1 
switch(eventId) { 
case EVENT0: 
    drawableId = R.drawable.event0; 
    break; 
case EVENT1: 
    drawableId = R.drawable.event1; 
    break; 
case EVENT2: 
    drawableId = R.drawable.event2; 
    break; 
} 
if (drawableId != -1) { 
Notification notification = new Notification.Builder(this) 
       .setSmallIcon(drawableId) 
       .setWhen(System.currentTimeMillis()).setTicker(message) 
       .setContentTitle("Real Madrid 2:1 Barcelona") 
       .setContentText(message).setContentIntent(pIntent) 
       .getNotification(); 
}