2013-06-07 5 views
0

У меня есть андроид приложения, который дает данные с сервера, я хочу делать уведомления, одно уведомление для каждой строки данных, я хочу, когда пользователь нажимает на уведомление, действие запускается, i хочу делать все, что с помощью службы android, я мог бы все это сделать.андроид уведомление показывает только последний notificatoin

моя проблема в том, что независимо от того, что пользователь нажимает, он просто показывает последнюю строку данных.

код:

lient client = new Client(Configuration.getServer()); 
     String str = client.getBaseURI("offers"); 
     try { 
      JSONArray json = new JSONArray(str); 
      for (int i = 0; i < json.length(); i++) { 
       JSONObject oneOffer = json.getJSONObject(i); 
       int offerID = oneOffer.getInt("ID"); 
       String offerDescriptoin = oneOffer.getString("Description"); 
       String endDate = oneOffer.getString("EndDate"); 
       String startDate = oneOffer.getString("StartDate"); 
       JSONObject restaurant = oneOffer.getJSONObject("Restaurant"); 
       int restaruantID = restaurant.getInt("ID"); 
       String restaurantName = restaurant.getString("Name"); 
       Offer offer = new Offer(offerID, startDate, endDate, 
         offerDescriptoin, new Restaurant(restaruantID, 
           restaurantName)); 
       Log.d("DES", offerDescriptoin); 
       Offer.getAllOffers().put(offer.getID(), offer); 
       Intent intent = new Intent(this, OfferNotification.class); 
       PendingIntent pIntent = PendingIntent.getActivity(this, 0, 
         intent, 0); 
       Uri soundUri = RingtoneManager 
         .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
       NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
         this).setSmallIcon(R.drawable.ic_launcher) 
         .addAction(R.drawable.ic_launcher, "call", pIntent) 
         .addAction(R.drawable.ic_launcher, "more", pIntent) 
         .addAction(R.drawable.ic_launcher, "add more", pIntent) 
         .setContentTitle("Offer from " + restaurantName) 
         .setContentText(offerDescriptoin).setSound(soundUri); 
       // Creates an explicit intent for an Activity in your app 
       Intent resultIntent = new Intent(this, OfferNotification.class); 
       resultIntent.putExtra("offerID", offer.getID()); 
       TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 

       stackBuilder.addParentStack(OfferNotification.class); 

       stackBuilder.addNextIntent(resultIntent); 
       PendingIntent resultPendingIntent = stackBuilder 
         .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
       mBuilder.setContentIntent(resultPendingIntent); 
       NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

       mNotificationManager.notify(offer.getID(), mBuilder.build()); 
      } 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

ответ

0

Убедитесь в следующем вызове mNotificationManager.notify (offer.getID(), mBuilder.build());

Идентификатор, удостоверяющий личность, является уникальным, иначе любые ожидающие уведомления с соответствующим идентификатором будут заменены.

Проверьте документацию слишком

http://developer.android.com/reference/android/app/NotificationManager.html

+0

Я знаю, что каждое предложение имеет уникальный идентификатор –

Смежные вопросы