0

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

我将我的对象的每个 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);
    }
4

1 回答 1

3

发生这种情况是因为当你打电话

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

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

于 2013-02-21T11:23:57.483 回答