我从数据库中查询了ArrayList
个对象,并且当用户触摸通知时,我想通知我的所有对象以删除它们。
我将我的对象的每个id设置为intent并开始意图删除它,但问题是当我触摸通知时第一项的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);
}
答案 0 :(得分:3)
这是因为当您致电
时PendingIntent pI = PendingIntent.getActivity(getApplicationContext(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
您提供值为“1”的静态请求ID,因此该方法每次都返回相同的PendingIntent
。要为每个项目创建不同的PendingIntents
,请为每个调用提供唯一的请求ID。希望这会有所帮助。