Aller au contenu

[Resolu] Editer TextView depuis un service


darako

Recommended Posts

Bonjour,

Dans le cadre de mon application j'ai plusieurs activités avec un service qui tourne en fond qui permet de mettre à jour des informations selon l'activité affichée...

Mon probleme c'est que je ne vois pas comment mettre à jour les informations de mes TextViews depuis les informations qui se trouve dans mon service...

Dans le service je ne peux pas utiliser la méthode findViewById car il n'herite pas d'activity et je ne peux pas créer des methodes static avec findViewById...

Est ce qu'il existe une solution?

Merci par avance.

Lien vers le commentaire
Partager sur d’autres sites

Tu doit pouvoir utiliser un Binder, ca te permet d'utiliser des méthodes de ton sevice dans les activitées liées à celui-ci.

Une petité méthode get***() créée dans ton service que tu appelles dans ton activité et le tour est joué.

Lien vers le commentaire
Partager sur d’autres sites

Tu peux utiliser le mécanisme des broadcast receivers. Depuis ton service, tu émets des messages qui correspondent aux mises à jour des données que tu souhaites afficher, Et tu enregistres un BroadcastReceiver dans ton Activity, lorsque celle-ci est affichée, qui se met à l'écoute de ces messages. En réponse à ces messages, tu pourras ainsi mettre à jour ton/tes TextView.

Lien vers le commentaire
Partager sur d’autres sites

Hum, merci bien pour ces premieres réponses... En ce qui concerne la création d'un get, le probleme c'est que je ferai appel au get uniquement lors du lancement de l'application et qu'ensuite les données ne seront pas update lorsqu'une nouvelle donnée sera recue par le service.

Par contre je suis bloqué sur le systeme de Broadcast... Dans mon activity j'ai créer un BroadcastReceiver

   public BroadcastReceiver receiver = new BroadcastReceiver() {
	 public void onReceive(Context context, Intent intent) {
		 System.out.println("Broadcast OK!");
	 }
   };

Puis j'ai essayé de créer une methode mySendBroadcast() dans mon service

avec un this.sendBroadcast();

Ca ne fonctionnait pas j'ai donc essayé ça:

public void mySendBroadcast(){
 Intent toto = new Intent();
 toto.putExtra("name", "mex");
 sendBroadcast(toto);
}

Mais ça ne fonctionne pas! Je pense que je loupe vraiment quelque chose quand j'ai fait des recherches sur internet je ne vois pas vraiment qu'est ce qui déclenche l'envoie du message Broadcast?

Merci par avance!

Lien vers le commentaire
Partager sur d’autres sites

Un BroadcastReceiver doit être enregistré pour pouvoir recevoir des Intents, en précisant quels intents le receiver est capable de traiter

Dans ton Activity:

 @Override
 public void onStart() 
   super.onStart();
   IntentFilter filter = new IntentFilter("mon.action");
   registerReceiver(receiver, filter);
 }

 @Override
 public void onStop()
   super.onStop();
   unregisterReceiver(receiver);
 }

et dans ton Service:

   Intent intent = new Intent("mon.action");
   intent.putExtra( .... );
   sendBroadcast(intent);

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...