Mehrere Instanzen Von Widgets, Nur die Aktualisierung Letzte widget
Ich habe eine WidgetProvider und Konfigurieren einer Aktivität
Wenn das Widget gestartet wird, beginnt es mit der Konfiguration Aktivität und ich es einrichten, indem Sie eine benutzerdefinierte Aufruf der widgetprovider
(was Euch auffallen wird, ist aus dem sdk-tutorial Beispiele)
//Push widget update to surface with newly set prefix
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
AwarenessWidget.updateAppWidget(context, appWidgetManager,
mAppWidgetId, position);
//Make sure we pass back the original appWidgetId
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();
Passiere ich die Widget-ID der Funktion.... innerhalb der widget erstelle ich einen Vorsatz wie:
Intent configIntent = new Intent(context, Configure.class);
configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pendingIntent = PendingIntent.getActivity
(context, 0, configIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.MainImage,pendingIntent);
views.setImageViewResource(R.id.MainImage, lv_images[version]);
appWidgetManager.updateAppWidget(appWidgetId, views);
Ich bin immer verweisen auf die widget-ID und sogar fügen Sie es als extra auf dem Vorsatz
aber wenn ich zwei von diesen widgets auf dem home-Bildschirm-widget-ID ist immer verweisen auf die Letztplatzierten widget-ID
InformationsquelleAutor morty346 | 2010-10-25
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches problem. Nur fügen Sie diese an Ihre config-Aktivität, wo Sie Ihre PendingIntent:
Die variable URI_SCHEME ist ein String, und können, was Sie möchte.. ie - "ABCD" Dies bewirkt, dass jedes widget ein eigener PendingIntent.
ok, gerade heraus, dass es in meiner widget-Funktion und es funktionierte
Dies funktioniert, aber ich verstehe nicht warum. Kann mir bitte jemand erklären, diese Antwort etwas weiter?
Wie bekomme ich die appWidgetId jetzt sagen, aus einer Tätigkeit????
Nach ein wenig Forschung, entdeckte ich eine Erklärung, warum diese Antwort funktioniert. Bitte siehe meine Alternative Antwort unten.
InformationsquelleAutor Snailer
Hier ist eine ausführlichere Erklärung, warum der code nicht funktioniert und wie man es beheben. Aus dem Android-SDK-Dokumentation:
Beachten Sie, dass die Angabe von unterschiedlichen "extra" Inhalte ist nicht genug für den PendingIntents zu, als einmalig betrachtet werden, aber die Einstellung einer eindeutigen URI mit setData ist. Das ist, warum Snailer-URI-Lösung "magisch" behebt das problem.
Die Dokumentation bietet auch eine andere (wohl einfacheren) Lösung für das problem. Anstatt erstellen ein benutzerdefiniertes URI-eine einzigartige requestCode, wenn Sie anrufen getActivity:
Quelle: http://developer.android.com/reference/android/app/PendingIntent.html
requestCode wird derzeit nicht verwendet das SDK, aber es verursacht in der Absicht zu, als einmalig betrachtet werden. Die Dokumentation schlägt vor, dass diese eine gültige Nutzung von requestCode: "oder anderen code anfordern ganze zahlen geliefert getActivity"
InformationsquelleAutor Code Commander
In meinen Tests über die setData(...) auf den PendingIntent nicht das Problem zu beheben auf einem Verizon Thunderbolt mit Android 4.0.4. Es funktioniert auf meinem anderen test-Geräten und dem emulator.
Getestet habe ich die Nutzung der requestCode statt, und es funktioniert in allen Fällen. Ich habe gerade den requestCode, um die widget-ID:
InformationsquelleAutor Sean Aitken