IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Dois-je utiliser un Intent ou Broadcast Intent?


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Dois-je utiliser un Intent ou Broadcast Intent?
    Bonjour a tous,

    Je suis nouveau sur le forum, et un apprenti développeur android. Je développe une petite application/jeu et je me retrouve avec un problème lors du passage d'informations entre 2 activités.

    J'ai une activité A qui lance une activité B, cependant je souhaite passer des données (variables de type int) de l'activité A dans une activité C qui n'est lancé ni par l'activité A, ni par l'activité C.

    J'ai donc procédé de différentes façon, tout d'abord en mettant un Extra dans l'intent de l'activité A (je ne pense pas que ce soit la bonne solution), puis, deuxièmement avec un broadcast intent dans l'activité A et un broadcast reciever dans mon activité C (celle qui doit recevoir les valeurs) sans oublier de déclarer un intent-filter dans le manifest.

    Etant donné que je fais beaucoup de faute puisque je débute, je ne sais pas qu'elle est la bonne solution.
    Si quelqu'un pourrait me donner des indications sur la methode a suivre et les principaux constructeurs à utiliser, je lui en serait reconnaissant.

    Je m'excuse si j'ai commis des fautes de vocabulaire en m'exprimant.

    Merci beaucoup!

    Guillaume

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 281
    Points : 161
    Points
    161
    Par défaut
    Pour le passage d'objet ou de paramètres de deux activités , la plupart du temps on utilise les Intent. A quel moment est appeler ton activité C. Pour plus de visibilité met nous du code

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonsoir, et merci de ta réponse rapide.

    En fait mon activité C est une listview où chaque item a une image et lorsque je clique sur un bouton dans mon activité A, cette dernière devrait envoyer un nombre aléatoire à mon activité C. Chaque nombre correspond a un item et donc l'image sera modifié si le nombre aléatoire correspondant est généré lors du click.

    Quant à la position de mon activité, j'ai au départ une activité qui me propose d'aller vers l'activité A ou la C ( un bouton pour aller vers A et l'autre pour C).

  4. #4
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Citation Envoyé par guigui14077 Voir le message
    J'ai une activité A qui lance une activité B, cependant je souhaite passer des données (variables de type int) de l'activité A dans une activité C qui n'est lancé ni par l'activité A, ni par l'activité C.
    Dans ce cas il faut utiliser un mécanisme de variable globales (static). Tu peux aussi utiliser les SharedPreferences. Ah oui, tu peux ausi utiliser la classe android.app.Application pour faire cela proprement.

    Enjoy
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Houla, donc finalement pas d'intent ou de broadcast intent? Qu'entend tu par "un mécanisme de variables globale?" Je vais essayer avec SharedPreferences, je vous tiens au jus. Si d'autres hypothèses se manifestent je suis preneur .

    Merci Hephaistos.

  6. #6
    Membre régulier Avatar de Rappunzell
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2007
    Messages : 93
    Points : 91
    Points
    91
    Par défaut
    Pour un "mécanisme de variable globale", il entend que tu dois créer une activité "mère" de laquelle hériteront tes activités A et C.

    Dans cette activité mère, tu déclares tes attributs avec le mot clé static. Cela fera en sorte de ne créer qu'une seule fois ces attributs. Ils seront "partagés" entres les différentes activités filles.

    SharedPreferences est, comme son nom l'indique, surtout utilisé pour stocker les préférences d'une application, c'est à dire les options. Un peu comme le principe d'un fichier .ini

    Perso j'utilise un Bundle que je passe en Extra de l'intent.

  7. #7
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Oui un bundle c'est mieux.

    Attention que les variables static peuvent être resetées si Android estime qu'il a besoin d'espace mémoire

    Les sharedPrefs c'est pratique mais lent.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Pour ma part, dans l'hypothese ou tu cherche a faire communiquer 2 Activity de maniere asynchrone, j'utiliserai un Broadcast Intent. De ce fait, si l'Activity sensé recevoir l'information n'est pas dispo (pas encore ouverte ou fermé par l'utilisateur ou le GB) tu n'auras pas d'erreur d'execution.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonsoir, merci de vos réponses, je vais essayer tout ça!

    J'ai du boulot!

  10. #10
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    En fait la question se résume au choix entre la radio et le téléphone....

    On peut téléphoner à quelqu'un (et gérer le cas ou il n'est pas présent, laisser un message, éventuellement prendre un autre interlocuteur si besoin), c'est l'Intent. Il faut bien avoir des informations sur ce quelqu'un, à défaut de son numéro de téléphone (la classe), au moins son nom (l'intent-name), et surtout le message qu'on a à lui dire (le contenu, les extras, et aussi le mime-type).

    On peut aussi émettre un message à la radio. Ceux qui veulent écouter écoutent, tant pis si personne n'écoute. C'est le BroadcastIntent. Encore faut-il choisir la bonne fréquence, et la bonne langue pour le message...

    En aucun cas c'est une question d'asynchrone ou non, d'activité dans des applis séparées ou non... juste le moyen de communication, ses avantages et inconvénients.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Donc comme tu me le dis nicroman, il est possible d'utiliser les intents, c'est le choix que je privilégiais, mais je ne vois pas bien comment transmettre un extra dans une activité qui n'est pas lancée par l'intent qui contient l'extra.

  12. #12
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Pourrais tu mettre ici l'arbre de lancement des activités ? et le cheminement complet depuis le début jusqu'à l'activité finale ?

    Je vois mal, conceptuellement, comment une activité peut lancer une autre activité avec une information qu'elle ne connait pas
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Depuis mon menu, j'ai le choix de cliquer sur un bouton pour aller vers le "jeu"(activité1) ou vers ma listview(activité1bis).

    Mon but est de transmettre le nombre aléatoire généré par l'activité3 à l'activité1bis pour que l'image de chaque item de ma listview change si le nombre aléatoire correspond à l'item avec lequel je veux le faire correspondre.

    Voici, l'arbre de mon application:

    Activité1--Activité2--Activité3
    Menu--
    Activité1bis

    Merci de votre aide.

  14. #14
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Non désolé... j'ai beau relu le message 3 fois ... je ne comprends pas ^^

    Je ne comprends même pas ce qu'est l'activité 3
    Essayes de donner des noms explicites aux activité ca aidera peut-etre, genre "ChoixDuPersonnage", "GénérationDeLaCarte", etc...

    Dans tous les cas, j'ai l'impression que la variable a passée représente un état de l'application (et donc une variable membre de l'application).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    En fait mon jeu est une sorte de "pokémon" dans l'activité3 un personnage est généré au hasard. J'ai mis les images des personnages dans un tableau de drawable. Avec un nombre aléatoire, par exemple le 3 j'ai une vache qui s'affiche à l'écran. Ensuite il est possible de répéter l'opération autant de fois que l'on veut.

    Et quand la vache qui correspond au nombre 3 est affiché dans l'activité3, je souhaite que ce nombre soit transmis à mon activité1bis (ma listview regroupant tout mes item) ex:la vache, le cochon...
    Cette activité n'étant pas sur la meme branche que l'activité3

    Par defaut, devant chaque item de ma listview j'ai inséré des carrés rouge, indiquant que l'on a jamais vu tous les animaux.

    Donc ici puisque j'ai eu une vache, il faudrait que dans ma listview mon carré rouge soit remplacé par une autre image, un carré vert puisque je l'ai deja vu dans mon jeu.

    J'espère que je me suis mieux exprimé cette fois

  16. #16
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Tu n'as qu'a lui passer une info (extra) lui disant de quelle activité tu viens

    En conséquence, tu sauras si tu peux lire tels ou tels paramètres.

    Tu peux très bien lui passer les champs A,B,C dans le cas d'Activité 1 et
    A,D,E dans le cas d'Activité 2
    Si la réponse vous a aidé, pensez à cliquer sur +1

  17. #17
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Citation Envoyé par guigui14077 Voir le message
    Par defaut, devant chaque item de ma listview j'ai inséré des carrés rouge, indiquant que l'on a jamais vu tous les animaux.
    Donc ici puisque j'ai eu une vache, il faudrait que dans ma listview mon carré rouge soit remplacé par une autre image, un carré vert puisque je l'ai deja vu dans mon jeu.
    Oui, il s'agit donc bien d'un système pour mémoriser ce qui a été vu ou non. Je réitère donc ma réponse #4 faite au début de ce thread On pourrait même suggérer la base SQLite mais c'est un peu sortir un bazooka pour tuer une mouche comme on dit.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bon eh bien merci à tous, je vais m'occuper de tout ça, et je repost si je rencontre des soucis!

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/08/2007, 12h47
  2. [HTML] Quel DOCTYPE dois-je utiliser ?
    Par Azashub dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/10/2006, 08h53
  3. [SQL2005] Quelle collation dois-je utiliser ?
    Par StormimOn dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/08/2006, 11h03
  4. dois-je utiliser RMI?
    Par popopate dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 14/07/2006, 16h46
  5. Dois je utiliser Xml ?
    Par shaudron dans le forum XML/XSL et SOAP
    Réponses: 11
    Dernier message: 07/03/2006, 19h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo