2013-02-21 38 views
0

我有从数据库中查询的对象的ArrayList,我想通知我的所有对象以在用户触摸通知时将其删除。在Android中处理多个通知

我把我的对象的每个ID意图和启动意图将其删除,但问题是,当我触摸通知第一项的ID是正确的,但,但别人是不是剧照第一个ID。

这是代码

for(int i=0;i<listItem.size();i++){ 
     String message = "Remove \""+listItem.get(i).getName()+"\" "+listItem.get(i).getID(); 
     intent.putExtra("id", listItem.get(i).getID()); 
     String s = intent.getExtras().getString("ID"); 
     Toast.makeText(getApplicationContext(),"id : "+s, Toast.LENGTH_SHORT).show(); 
     Notification notification = new Notification(R.drawable.icon_noti,message,new Date().getTime()); 
     PendingIntent pI = PendingIntent.getActivity(getApplicationContext(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     notification.flags = Notification.FLAG_AUTO_CANCEL; 
     NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     notification.setLatestEventInfo(getApplicationContext(), message, "Touch to remove" , pI); 
     notification.sound = soundUri; 
     notificationManager.notify(i,notification); 
    } 

回答

3

这是因为,当你调用

PendingIntent pI = PendingIntent.getActivity(getApplicationContext(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

您提供值“1”静态请求ID,因此该方法每次都返回你同样PendingIntent 。要为每个项目创建不同的PendingIntents,请为每个呼叫提供唯一的请求ID。希望这可以帮助。

+0

如果我将1更改为i。它会起作用吗? – aratn0n 2013-02-21 11:31:03

+0

@ aratn0n,是的,它应该工作。 – Egor 2013-02-21 11:31:52

+0

非常感谢。它现在有效。 – aratn0n 2013-02-21 11:39:58