38

Tôi có một hoạt động đang được mở từ thanh thông báo, nhưng khi tôi thực hiện NotificationManager.notify(...), tôi đưa ra ý định một gói khác nhau, để mỗi thông báo mở cùng hoạt động, nhưng có được từ DB thông tin khác nhau.Nhiều thông báo cho cùng một hoạt động

Nhưng khi tôi cố gắng nhập vào bất kỳ thông báo nào (ví dụ: có 3 thông báo), tất cả đều gửi cho tôi hoạt động với cùng gói mà người cuối cùng gửi. Sau khi thử với một số cờ, tôi thực sự không biết đâu là vấn đề (một số cờ làm cho thông báo nhập vào hoạt động với gói đầu tiên).

Tôi đang theo cách họ đã sử dụng nó trong the tutorial.

+0

Bạn có thể chia sẻ một số mã nơi bạn đang tạo các Intents chờ? Tôi đã có một vấn đề tương tự và đó là bởi vì họ là những ý định đang chờ được tái sử dụng bởi khuôn khổ. – Maximus

Trả lời

104

Nếu PendingIntent có cùng thao tác, hành động, dữ liệu, danh mục, thành phần và cờ, nó sẽ được thay thế.

Tùy thuộc vào tình huống tôi thường giải quyết điều này bằng cách cung cấp mã yêu cầu duy nhất làm giá trị tĩnh (0,1,2) hoặc id hàng của dữ liệu tôi nhận được từ DB.

PendingIntent.getActivity(context, MY_UNIQUE_VALUE , notificationIntent, PendingIntent.FLAG_ONE_SHOT); 

Sau đó, tôi sử dụng giá trị độc đáo cùng với thông báo() như

mNotificationManager.notify(MY_UNIQUE_VALUE, notification); 
+0

Điều này đã làm cho tôi. Cảm ơn nhiều. Tài liệu dành cho nhà phát triển thực sự chỉ đề cập đến một id duy nhất cho phương thức thông báo, không phải cho phương thức getActivity. – hcpl

+7

Tôi đã có cùng một vấn đề và giải pháp này hoạt động hoàn hảo. Tôi nghĩ rằng vấn đề bắt đầu với [tài liệu] (http://developer.android.com/reference/android/app/PendingIntent.html#getActivity%28android.content.Context,%20int,%20android.content.Intent,% 20% 29) - tuyên bố rằng mã yêu cầu hiện không được sử dụng, nhưng có vẻ như vậy. Cảm ơn câu trả lời. – jstr069

+5

Điều này cũng làm việc cho tôi. Vui lòng đánh dấu nó là giải pháp. – dangel