2010-09-16 10 views
50

Ich habe ein Widget erstellt, das beim Anklicken einen PendingIntent aktiviert. Das Problem ist, wenn ich mehr als ein Widget auf dem Bildschirm habe, startet nur der letzte den PendingIntent.Mehrere Instanzen mit ausstehender Absicht

Ich habe einige über einen eindeutigen Anfragecode gelesen, aber nicht herausgefunden.

Irgendwelche Ideen, wie ich mehrere Widgets und die PendingIntents für jeden arbeiten kann?

Hier ist ein Ausschnitt aus meinem Code:

Intent openApp = new Intent(context, RunningTally.class); 
    openApp.putExtra("widgetId", appWidgetId); 
    PendingIntent pendingAppIntent = 
     PendingIntent.getActivity(context, 0, openApp, PendingIntent.FLAG_CANCEL_CURRENT ); 
    views.setOnClickPendingIntent(R.id.openFull, pendingAppIntent); 

Antwort

109

kommt es, dass meine Frage nach der Einlieferung, ich mit einer Antwort kam. Ich gebe meine AppWidgetId als "eindeutigen" Anfragecode ein und voila! Hier ist der Schnipsel jetzt:

Intent openApp = new Intent(context, RunningTally.class); 
    openApp.putExtra("widgetId", appWidgetId); 
    PendingIntent pendingAppIntent = 
     PendingIntent.getActivity(context, appWidgetId, openApp, 
            PendingIntent.FLAG_CANCEL_CURRENT); 
    views.setOnClickPendingIntent(R.id.openFull, pendingAppIntent); 
+7

Schade, dass die Dokumentation nicht die offizielle Verwendung des requestcode nicht erwähnt ... – barkside

+22

Das Schlimmste ist, dass die Dokumentation sagt: requestCode \t Privatanforderungscode für den Absender (derzeit nicht verwendet) . Also habe ich es gesehen, aber ich habe es nicht versucht, weil ich dachte, es würde nicht funktionieren! – thiagolr

+0

Arbeitete perfekt für mich. Danke. – cstick