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 に答える