여러 위젯이 있습니다. 각 업데이트에 나는 서비스 서비스 코드를 시작여러 개의 AppWidget을 업데이트하는 모호성
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 사건은 그것이 예정되어있는대로 해고되지 않습니다. 이 이벤트에 전송 된 데이터가 전송 무엇 및 의 마지막 값입니다 (마지막 위젯 즉 사람을 업데이트 할 수 있습니다.)
작동했습니다. 당신의 대답에서 언급했듯이, 위젯과 관련된 더 이상 버그가 있습니까? 그러나, 나는 아직도 문제를 이해하지 못한다. 왜 첫 번째 의도는 잊혀져 버리는가? – harshit
PendingIntents가 고유한지 여부를 결정할 때 Android가 추가 콘텐츠의 콘텐츠를 보지 않는 것으로 보입니다.따라서 두 번째 의도를 만드는 것을 보았을 때 "이 사실은 기존의 PendingIntent와 정확히 동일한 의도입니까? 예? 그렇다면이 경우 모두 사용하십시오." 왜 이런 식으로하는지 모르겠습니다. @harshit – Tim
하지만 사실은 그렇지 않습니다. 나는 지나가는 엑스트라가 다르다는 것을 의미한다. 또한 Google 쿼리 URI를 전달하는 다른 의도에 대해서도 작동합니다. 어째서? – harshit