我有多個部件。在更新每個i在服務啓動服務代碼:歧義更新多AppWidgets
for (int widgetId : allWidgetIds) {
// Register an onClickListener for DisplayActivity
Intent clickIntentUpdate1 = new Intent(
this.getApplicationContext(), DisplayActivity.class);
clickIntentUpdate1.putExtra("widgetid", widgetId);
clickIntentUpdate1.putExtra(DisplayActivity.WHAT, what);
clickIntentUpdate1.putExtra(DisplayActivity.WHAT_COLOR, prefs
.getString(QuoteConfigure.PREF_PREFIX_KEY_QUOTE_COLOR
+ widgetId, "Transparent"));
clickIntentUpdate1.putExtra(DisplayActivity.WHO, who);
clickIntentUpdate1.putExtra(DisplayActivity.WHO_COLOR, prefs
.getString(
QuoteConfigure.PREF_PREFIX_KEY_QUOTE_BY_COLOR
+ widgetId, "Transparent"));
clickIntentUpdate1.putExtra(
DisplayActivity.BG_COLOR,
prefs.getString(QuoteConfigure.PREF_PREFIX_KEY_QUOTE_BG
+ widgetId, "Transparent"));
PendingIntent pendingIntentUpdate1 = PendingIntent.getActivity(
getApplicationContext(), 0, clickIntentUpdate1,
PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.what,
pendingIntentUpdate1);
Log.d("quoteSERVICE", what + " -> " + who);
Log.d("quoteSERVICE", "what inside intent:"+clickIntentUpdate1.getExtras().getString(DisplayActivity.WHAT));
Log.d("quoteSERVICE", "widgetid:"+widgetId);
Log.d("quoteSERVICE", "--------------------");
// Register an onClickListener for Who search
Intent clickIntentSearch = new Intent(Intent.ACTION_VIEW);
clickIntentSearch.setData(Uri
.parse("http://www.google.com/search?q=" + who));
PendingIntent pendingIntentSearch = PendingIntent.getActivity(
getApplicationContext(), 0, clickIntentSearch, 0);
remoteViews.setOnClickPendingIntent(R.id.who,
pendingIntentSearch);
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
stopSelf();
現在的問題是:
我有兩個小部件,當他們更新R.id.who意圖,因爲它是應該被解僱與所需的數據一致。然而,R.id.what的事件並不像它應該的那樣被解僱。在這種情況下發送的數據是誰發送什麼和最後的值(即在過去的控件的人來進行更新。)
它確實有效。正如您的答案中所述,是否還有與小部件相關的錯誤?但是,我仍然不明白這個問題,爲什麼第一個** Intent **被遺忘了。 – harshit
Android在決定PendingIntents是否唯一時似乎沒有看額外內容。因此,當它看到你創建第二個意圖時,它自己說:「這與現有的PendingIntent完全一樣嗎?是的?好的,只是將這個意圖用於這兩種情況。」我不確定這是爲什麼。 @harshit – Tim
但它實際上不是。我的意思是我通過的演員是不同的。另外,它適用於我傳遞Google查詢URI的另一個意圖。怎麼來的? – harshit