Plusieurs Instances De Widget Uniquement la mise à Jour de la Dernière widget
J'ai un WidgetProvider et Configurer Activité
Lorsque le Widget est lancé, il démarre avec la configuration de l'activité et je l'ai configuré en faisant une coutume de l'appeler pour le widgetprovider
(que vous remarquerez, c'est à partir du sdk tutoriel, exemples)
//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();
Je passe le Widget ID à la fonction.... à l'intérieur du widget-je créer une Intention comme ceci:
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);
Je suis toujours référencement du widget ID et même l'ajouter en tant que supplément à l'intention
mais quand je me deux de ces widgets sur l'écran d'accueil widget ID est toujours référencement le dernier placé widget ID
OriginalL'auteur GregM | 2010-10-25
Vous devez vous connecter pour publier un commentaire.
J'ai eu un problème similaire. Juste ajouter ceci à votre config activité, où vous définissez votre PendingIntent:
La variable URI_SCHEME est une Chaîne de caractères, et peut-être ce que vous voulez.. c'est à dire - "ABCD" Cela provoque chaque widget d'avoir un unique PendingIntent.
ok, juste dans ma fonction widget et cela a fonctionné
Cela fonctionne, mais je ne comprends pas pourquoi. Quelqu'un peut-il expliquer cette réponse un peu plus loin?
Comment puis-je obtenir le appWidgetId maintenant dire à partir d'une activité????
Après un peu de recherche, j'ai découvert une explication de pourquoi cette réponse œuvres. Veuillez voir mon suppléant réponse ci-dessous.
OriginalL'auteur Snailer
Voici une explication plus approfondie de pourquoi votre code ne fonctionne pas et comment le résoudre. À partir de l'Android SDK Documentation:
Noter que la spécification de différents "extra" le contenu n'est pas assez pour le PendingIntents pour être considéré comme unique, mais la définition d'un URI unique avec setData est. C'est pourquoi Snailer de l'URI de la solution "comme par magie" résout le problème.
La documentation propose également un autre (sans doute le plus simple) solution du problème. Au lieu de créer une URI personnalisé il suffit de mettre un unique requestCode lorsque vous appelez getActivity:
Source: http://developer.android.com/reference/android/app/PendingIntent.html
requestCode n'est pas actuellement utilisé par le SDK, mais provoque l'Intention d'être considéré comme unique. La documentation suggère que c'est une utilisation valide de requestCode: "ou autre demande de code entiers fournis à getActivity"
OriginalL'auteur Code Commander
Dans mes tests, à l'aide de la setData(...) sur le PendingIntent ne résout pas le problème sur un de Verizon Thunderbolt fonctionnant sous Android 4.0.4. Il fonctionne sur mes autres appareils de test et l'émulateur.
J'ai testé l'utilisation de la requestCode au lieu de cela, et il fonctionne dans tous les cas. Je viens de mettre la requestCode être le widget ID:
OriginalL'auteur Sean Aitken