Aller au contenu

RESOLU: Rafraichir un Widget, OK, mais...


Profete162

Recommended Posts

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

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

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...