2011-09-04 96 views
4

我尝试创建多个通知。如果点击通知,它会将 链接到其他活动。在下面的代码后,它会创建两行通知。 但是,当我点击通知的第一行时,它不起作用。 只有第二个作品。第二个通知不起作用

for (int i = 0; i < missionName.size(); i++) { 
    mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    final Notification notifyDetails = new Notification(R.drawable.icon, 
      "Mission Completed, Click Me!", System.currentTimeMillis()); 
    notifyDetails.defaults |= Notification.DEFAULT_SOUND; 
    notifyDetails.defaults |= Notification.DEFAULT_VIBRATE; 
    Context context = getApplicationContext(); 
    CharSequence contentTitle = missionName.get(i) + " is completed"; 
    CharSequence contentText = "Please click to view the mission"; 
    Intent notifyIntent = new Intent(getApplicationContext(),MissionMap.class); 
    notifyIntent.putExtra("missionName", missionName.get(i)); 
    PendingIntent intent = PendingIntent.getActivity(ApplicationMenus.this, 
      0, notifyIntent, android.content.Intent.FLAG_ACTIVITY_NEW_TASK); 

    notifyDetails.setLatestEventInfo(context, contentTitle, contentText, 
      intent); 
    mNotificationManager.notify(i, notifyDetails); 
} 

所以,请帮我找到我的错误。非常感谢。

回答

17

您应该使用不同的请求代码创建PendingIntent。 更改此:

PendingIntent intent = PendingIntent.getActivity(ApplicationMenus.this, 
     0, notifyIntent, android.content.Intent.FLAG_ACTIVITY_NEW_TASK); 

要这样:

PendingIntent intent = PendingIntent.getActivity(ApplicationMenus.this, 
     i, notifyIntent, android.content.Intent.FLAG_ACTIVITY_NEW_TASK); 

请注意,我已经改变了第二个参数而不是0 意图你的循环索引(i)如果您使用不创建相同的参数,而是他们使用具有相同参数的以前的意图。

这应该可以解决您的问题。

+0

谢谢你,我知道了:)) – Yoo

+2

走回家早,因为你的感谢@incrediApp –

+0

@incrediApp睡的早,因为你 –

0
Random random = new Random(); 
    int randomNumber = random.nextInt(9999 - 1000) + 1000;  

    Intent resultIntent = new Intent(this, MainActivity.class); 
    TaskStackBuilder TSB = TaskStackBuilder.create(this); 
    TSB.addParentStack(MainActivity.class); 

    TSB.addNextIntent(resultIntent); 
    PendingIntent resultPendingIntent = 
      TSB.getPendingIntent(
        randomNumber, 
        PendingIntent.FLAG_UPDATE_CURRENT 
      ); 

    nb.setContentIntent(resultPendingIntent);