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 :

Passer des paramètres à une activity mère


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de titou624
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 152
    Par défaut Passer des paramètres à une activity mère
    Je m'explique un peu :

    Je passe des paramètres à une intent que je lance comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Bundle objetbunble = new Bundle();
    objetbunble.putString("idProd", idProduit);
    Intent intentDesc = new Intent(getApplicationContext(), DescriptionProduit.class);
     
    //On affecte à l'Intent le Bundle que l'on a créé
    intentDesc.putExtras(objetbunble);
     
    //On démarre l'autre Activity
    startActivityForResult(intentDesc, CODE_DESCRIPTION_PRODUIT);
    Ce qui fonctionne parafaitement.

    Ensuite je récupère les paramètres dans mon activity fille. Le soucis intervient losrque je veux récupérer des paramètres dans mon activity mère.

    Je les passe ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Bundle b = getIntent().getExtras();
    b.putInt("qte_produit", Integer.parseInt(ed_qte.getText().toString()));    setResult(RESULT_OK);
    finish();
    Mais lorsque je les récupère dans la fonction onActivityResult:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
        public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    
            if (requestCode == CODE_DESCRIPTION_PRODUIT) {
                if(resultCode == RESULT_OK){
                     Log.e("qteproduit",intent.getIntExtra("qte_produit",0)+"");
                    // Si le produit correspond, on l'ajoute a la base                    
                    sp.addProduct(devis.getId(), intent.getLongExtra("idProduit", 0), intent.getIntExtra("qte", 0));
                    try {
                        updateDataProduits();
                    } catch (JSONException e) {                
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    Sur la ligne en gras j'ai une erreur de type null pointer exception...

    Est-ce de cette manière qu'il faut procéder ?

    Merci beaucoup !

  2. #2
    Membre confirmé Avatar de titou624
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 152
    Par défaut
    C'est bon j'ai trouvé !
    Il faut en fait retourner l'intent pour que l'activity mère puisse retrouver les extra que la classe fille lui donne. (Je pensais que cela se faisait par défaut )

    Voila le bon code de la classe fille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    getIntent().putExtra("qte_produit", Integer.parseInt(ed_qte.getText().toString()));            
    setResult(RESULT_OK,getIntent());
    Bonne journée !

  3. #3
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Salut,

    J'ai un probleme malgrès que je retourne l'intent de la classe, le parametre intent de onActivityResult reste null, une idée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    //Activity Mere
    void toto() {
        startActivityForResult(intent, ACTIVITY_PREF);
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
            super.onActivityResult(requestCode, resultCode, intent);
            //Ici intent null
    }
    //Activity fille
    @Override
    public void onPause() {
        	setResult(RESULT_OK, getIntent() );
        	finish();
        	super.onPause();
    }

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    N'oubliez pas les variables statiques qu'ont peux utiliser partout, entre les activity.
    Avantages : Avec les variables static, un object peut meme transiter.

  5. #5
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,


    Attention sur l'ordre d'appel , je crois que le onActivityResult est appelé avant les onPause de la class Fille lorsque celle-ci est détruite. essaye de faire un SetResult dans le onStart pour voir si cela change quelque chose, tu peux le rappeller par le suite pour changer sa valeur

    la procédure SetResult ne sert qu'a modifier ou initialiser la variable de retour.

  6. #6
    Membre averti
    Inscrit en
    Août 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 17
    Par défaut
    Citation Envoyé par jahbromo Voir le message
    N'oubliez pas les variables statiques qu'ont peux utiliser partout, entre les activity.
    Avantages : Avec les variables static, un object peut meme transiter.
    Exact et pour faire propre, c'est à dire ne pas casser l'encapsulation, on peut utiliser des classes statiques ou encore mieux, le design pattern singleton.

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

Discussions similaires

  1. Passer des paramètre à une imprimante
    Par azorol dans le forum VBScript
    Réponses: 4
    Dernier message: 15/11/2008, 21h42
  2. Passer des paramètres à une fonction dans before_filter
    Par abir84 dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 27/01/2008, 19h40
  3. Réponses: 4
    Dernier message: 05/11/2007, 09h19
  4. Réponses: 1
    Dernier message: 11/08/2007, 17h16
  5. Réponses: 1
    Dernier message: 29/05/2006, 10h04

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