2016-03-14 45 views
0

我的應用需要顯示多個通知。每個通知使用相同的自定義佈局xml,它具有一個按鈕,該按鈕用一個額外的int(數字X)觸發一個意圖,該數字對於每個通知都是唯一的。RemoteViews setOnClickPendingIntent即使在不同的通知中也覆蓋相同視圖ID的意圖

這是通過RemoteViews完成的,所以我做這樣的事情對我的每一個通知:

RemoteViews remoteViews = new RemoteViews(...); 
remoteViews.setOnClickPendingIntent(R.id.myButton, myIntentWithUniqueId) 
Notification myNotification = new NotificationCompat.Builder(context) 
    .setContent(remoteViews) 
    ... 
    .build(); 

我用不同的ID的顯示通知

notificationManager.notify(someUniqueId, myNotification) 

時,我發現,即使我能顯示多個通知,所有通知中的所有按鈕都具有與顯示的最後通知相同的意圖。通過查看每個通知中的按鈕在按下每個通知中的按鈕時都包含相同的額外int X來驗證。

這是一個錯誤或設計?

回答

0

您的問題可能會解決此問題。將您的求職者添加到TaskStackBuilder。 這將檢索與相關通知關聯的pendingintent。例如..

android.support.v4.app.TaskStackBuilder stackBuilder = android.support.v4.app.TaskStackBuilder.create(this); 

//      TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
         stackBuilder.addParentStack(MainActivity.class); 
         stackBuilder.addNextIntent(resultIntent); 
         PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(notificationid, PendingIntent.FLAG_UPDATE_CURRENT); 

         //resultPendingIntent = PendingIntent.getActivity(this, notificationid, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
         mBuilder.setContentIntent(resultPendingIntent); 

,或者嘗試使用廣播意圖一樣,

Intent resultDismissintent = new Intent(getApplicationContext(), NotificationCancelReceiver.class); 
resultDismissintent.putExtra("notificationId", notificationid); 
resultDismissintent.putExtras(resultIntent.getExtras()); 

PendingIntent resultCancelPendingIntent = PendingIntent.getBroadcast(this, notificationid, resultDismissintent, PendingIntent.FLAG_UPDATE_CURRENT); 

contentView.setOnClickPendingIntent(R.id.tv_view, resultCancelPendingIntent); 
contentView.setOnClickPendingIntent(R.id.tv_cancel, resultPendingIntent); 
+0

我不太讓你如何通過使用TaskStackBuilder解決問題。在我看來,你正在調用NotificationBuilder#setContentIntent,但正如你可以看到我的意圖實際上是在RemoteViews中爲特定的View設置的(我實際上在RemoteViews中有三個按鈕,但我認爲用一個按鈕問這個問題更容易) ,所以我沒有爲我的通知設定意圖。 – Herman

相關問題