Profete162 Posté(e) 6 avril 2010 Share Posté(e) 6 avril 2010 Salut à tous, J'ai une petite colle qui me bloque depuis 2 jours. Je me suis bien donné dans la programmation de widgets, et j'ai un petit soucis. Cela concerne l'actualisation du widget. En effet quand je suis dans un activité de mon application, je me suis fait un petit bouton qui me lance un broadcast, qui est percu par le widget: Intent intent = new Intent( MaClasse.PROFETE162_WIDGET_UPDATE); sendBroadcast(intent); Maintenant, le soucis est le suivant: J'aimerais transposer mon bouton dans le widget pour créer un petit bouton "refresh widget". Et c'est là que je coince. En effet, dans le widget, le seul truc que j'ai compris qui obéit à un clic, c'est le views.setOnClickPendingIntent(id,pendingIntent) Je ne vois vraiment pas la relation entre un pendingIntent et mon Broadcast... Merci à vous pour toutes infos sur le rafraichissement de Widget. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nivek Posté(e) 6 avril 2010 Share Posté(e) 6 avril 2010 Poourquoi un broadcast ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Profete162 Posté(e) 6 avril 2010 Auteur Share Posté(e) 6 avril 2010 Poourquoi un broadcast ? Parceque j'y comprends pas grand chose et c'est le seul truc que j'ai trouvé qui fonctionne. Si tu as mieux, je suis preneur! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nivek Posté(e) 6 avril 2010 Share Posté(e) 6 avril 2010 J'ai un widget en cours sur une autre appli pas encore finalisé... je jetterai un oeil ce soir si je ne m'endors pas avec les petits... :P Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nivek Posté(e) 13 avril 2010 Share Posté(e) 13 avril 2010 Bon, je viens de me rafraichir la mémoire sur les widgets... Donc en théorie si tu veux que ton bouton déclenche l'envoi de ton Broadcast spécifique, tu vas devoir faire un truc du genre : Intent i = new Intent(MaClasse.PROFETE162_WIDGET_UPDATE); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, i, 0); views.setOnClickPendingIntent(id, pendingIntent) Là j'ai remis le nez dans le widget que j'avais commencé, mais dont la mise à jour est basé sur le lancement d'un service... mais j'ai également prévu un bouton de refresh qui pour l'instant n'est pas au point. Donc bon... ca vaut ce que ca vaut ;-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Profete162 Posté(e) 14 avril 2010 Auteur Share Posté(e) 14 avril 2010 Merci. En fait, écrire tout en une fois, ca revient au même que de rajouter une Action? J'avais trouvé ceci en attendant: intent = new Intent(context, MonAppWidgetProvider.class); intent.setAction("Update"); pendingIntent = PendingIntent.getBroadcast(context,0, intent,0); views.setOnClickPendingIntent(R.id.montrain, pendingIntent); et ensuite dans le receive: public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); final String action = intent.getAction(); if( action.contentEquals("Update")) { (blabla..) Voilà, j'espère que ca pourra aider, ca permet alors de faire toutes les actions que l'on veut. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nivek Posté(e) 14 avril 2010 Share Posté(e) 14 avril 2010 Je pense que ta nouvelle implémentation est meilleure car elle s'adresse directement à ta classe. Si on ne fait que définir une action "custom" qu'on broadcast au hasard, le système va certainement passer un poil plus de temps pour trouver l'ensemble des receivers intéressés par cette action pour leur transmettre. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.