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 :

Récupérer l'Activity originaire d'un Intent


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé 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
    Par défaut Récupérer l'Activity originaire d'un Intent
    Bonjour ,

    je ne sais pas si ma question paraitra claire. Je m'explique :

    J'ai une Activity A qui déclare un Intent afin de démarrer une autre Activity B, dans lequel je met un Bundle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Bundle bdl = new Bundle();
    bdl.putString("data1", "foo");
    bdl.putString("data2", "bar");
     
    Intent intent = new Intent(A.this, B.class);
    intent.putExtras(bdl);
    startActivity(intent);
    Dans l'activité B, j'aimerais pouvoir créer un intent dont le but sera de redémarrer l'activité qui l'a "appelé" (en l'occurrence A)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Intent intent = new Intent(B.this, A.class);
    startActivity(intent);
    Ok, sauf que ce n'est pas forcément A qui va appeler B, ça peut être C, D ou encore YoupiLaJoieLesOiseauxChantent...

    J'ai donc essayé ceci dans B:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Class<? extends Intent> c = this.getIntent().getClass();
    Intent intent = new Intent(B.this, c);
    startActivity(intent);
    Mais ça ne fonctionne pas, j'ai droit à un "Force close".

    Ce que je veux faire est-il possible ? Comment procéder ?

    Merci

  2. #2
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    startActivityForResult() n'est pas ce que vous cherchez ?

  3. #3
    Membre Expert
    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
    Par défaut
    Je ne crois pas qu'on puisse récupérer le contexte (i.e. l'activité appelante) à partir d'un intent. Mais pourquoi ne pas ajouter un simple extra :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //code de l'activité A
    Intent i = new Intent(...); 
    i.putExtra("originator", "A");
     
    //code de l'activité YoupiLaJoieLesOiseauxChantent
    Intent i = new Intent(...); 
    i.putExtra("originator", "YoupiLaJoieLesOiseauxChantent");
    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

  4. #4
    Membre confirmé 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
    Par défaut
    Bonjour,

    merci à vous deux pour vos réponses.

    nicroman :

    Non, je cherche a récupérer la classe de l'activité appelante afin de pouvoir recréer un intent pour la rappeler.


    Hephaistos007 :

    Très bien mais, dans ton exemple en tout cas, je récupère un simple String. Un intent a besoin de la classe de l'activité cible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Intent intent = new Intent(A.this, B.class);
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Intent intent = new Intent(A.this, "B");
    Comment faire si je te suis ?

  5. #5
    Membre Expert
    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
    Par défaut
    Par les techniques de réflexivité :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    final Class<?> cible = Class.forName("YoupiLaJoieLesOiseauxChantent");
    Intent intent = new Intent(A.this, cible);

    Consulter aussi les tutoriels et cours de formation pour apprendre Android : http://android.developpez.com/cours/, il y a sûrement l'explication.
    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

  6. #6
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Rappunzell Voir le message
    Non, je cherche a récupérer la classe de l'activité appelante afin de pouvoir recréer un intent pour la rappeler.
    Oui, j'avais bien compris, ce qui m'inquiète c'est le risque de boucles dans la pile des activités... A=>B=>A=>B=>A... Appuyer 5 fois sur back pour quitter l'appli !!!! En général ce genre d'appli ne reste jamais bien longtemps installée.

  7. #7
    Membre Expert
    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
    Par défaut
    Tu peux retirer programmatiquement une activité de la pile.
    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

  8. #8
    Membre confirmé 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
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Oui, j'avais bien compris, ce qui m'inquiète c'est le risque de boucles dans la pile des activités... A=>B=>A=>B=>A... Appuyer 5 fois sur back pour quitter l'appli !!!! En général ce genre d'appli ne reste jamais bien longtemps installée.
    Si ça peut te rassurer, j'utilise startActivityForResult(), setResult() et onActivityResult() dans laquelle je "kill" l'activité... Pas de danger au niveau de l'appui répété de la touche retour. Et puis de toute façon l'appli n'est pas destinée à finir sur le market.

    Bref, ceci étant fait, je répète que ce n'est pas mon sujet


    Hephaistos007 :

    J'ai tenté ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    String nomClasse = bdl.getString("origine");
     
    try {
            final Class<?> cible = Class.forName(nomClasse);
    	intent = new Intent(TraitementErreurs.this, cible);
    } 
    catch (ClassNotFoundException e) {
    	e.printStackTrace();
    }
    En traçant, je constate que la methode forName renvoie l'exception... Pourtant nomClasse contient bien le bon nom, je ne comprend pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PrimeFaces] Récupérer ligne active datatable
    Par luperrot dans le forum JSF
    Réponses: 2
    Dernier message: 27/09/2012, 16h49
  2. [AC-2003] Récupérer valeur active d'un autre form.
    Par lbar012001 dans le forum IHM
    Réponses: 2
    Dernier message: 01/02/2011, 18h03
  3. Récupérer cellule active open office
    Par j-lo28 dans le forum VB.NET
    Réponses: 0
    Dernier message: 30/10/2010, 21h54
  4. Réponses: 6
    Dernier message: 13/10/2008, 15h36
  5. [InnoSetup] Récupérer l'active code page d'une machine
    Par brouss dans le forum Autres langages
    Réponses: 1
    Dernier message: 23/03/2007, 12h54

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