2009-12-01 5 views
2

Posté le: Lun 30 novembre 2009 17:08 Sujet du message: Simple Problème Avec Extras Intent Bonjour,Problème simple Avec Extras Intent

Je travaille sur un widget application pour l'écran d'accueil. J'essaie de le faire quand un utilisateur appuie sur le widget, il modifie les données affichées dans le widget. Cependant, j'autorise également plusieurs instances de widgets ouvertes avec des données différentes. Donc, afin de dire à ma méthode quel widget mettre à jour, j'ajoute un extra à l'intention qui est lancée pour changer les données.

est ici l'intention je: Java:

Intent changeData = new Intent("com.tonycosentini.mintdroid.CHANGE_DATA"); 
changeData.putExtra("widget_id", currentWidgetId); 
PendingIntent changeDataPendingIntent = PendingIntent.getBroadcast(this, 0, changeData, 0); 
//This will return the correct value, but if I call it in my onreceive() method it won't. 
Log.v(TAG, "stored id is: " + changeData.getIntExtra("widget", 0); 

Ce stocke correctement l'ID widget, mais lorsque la méthode de changement de données est appelée, l'ID widget qui est lu à partir de l'intention est la première instance widget . C'est-à-dire qu'il existe une boucle for qui génère tous les widgets et quel que soit le widget que vous appuyez, l'identifiant du widget reçu est toujours le premier identifiant du widget dans le premier widget.

Quelqu'un a-t-il une idée pour résoudre ce problème? J'espère que je ne l'ai pas trop mal prononcé.

Merci pour la lecture, Tony

Répondre

1

Ceci est un problème connu avec PendingIntents; Lorsque Android compare PendingIntents, il ne compare pas les extras Intent, de sorte que vous ne pouvez pas planifier le même Intention de base plusieurs fois avec seulement des extras différents. À l'heure actuelle, vous ne pouvez résoudre ce problème qu'en rendant l'intention unique d'une manière autre que des extras, par exemple en ajoutant des informations supplémentaires aux données de l'intention.

Il y a un peu de discussion de ce groupe sur le Google Android: http://groups.google.com/group/android-developers/browse_thread/thread/81100da6ddb21136

+0

Ah, qui fait grâce sens pour la clarification! J'ai essayé d'utiliser la méthode setData() (avec juste un simple url http à google à des fins de test) pour définir l'ID du widget, mais maintenant la méthode onReceive() n'est jamais appelée. Je vais devoir continuer à bricoler, mais merci pour la réponse! – tonyc

Questions connexes