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 :

Problèmes de passages de variables


Sujet :

Android

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut Problèmes de passages de variables
    Bonjour à tous,

    Je commence à développer sur Android et j'ai fait une application avec 2 activité


    Seulement maintenant je voudrais faire passer une valeur acquise lors de ma première activité à la deuxième

    Je veux juste récupérer une variable d'une listview de ma première activité dans la deuxième sur un editText .

    Je ne sais pas si j'ai été assez clair mais je vous remercie par avance pour l'aide que vous pourrez m'apporter.

    voir si c'est possible ou pas


    //-------------------------définition de ma listeView-------------------\\
    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
    19
    20
    21
    22
    23
    24
    25
    final ListView listViewMateriel = (ListView) findViewById(R.id.listViewMateriel);
     
            MaterielList = new ArrayList<Map<String, String>>();
     
    		element=new HashMap <String,String>();
    		element.put("id",Message);
    		element.put("modele","Appuyer sur select pour rafraichir  la selection");
    		MaterielList.add(element);
     
     
    		listElem = new ArrayList<String>();
    		//listElem.add("Veuillez pousser sur Select");
     
     
            listViewMateriel.setOnItemClickListener(new OnItemClickListener() {
    			@Override
    			public void onItemClick(AdapterView<?> parent, View view,
    					int position, long id) {
     
                    Intent intent = new Intent (MainActivity.this, Materiel.class);
                    intent.putExtra("modele", element);
                    startActivity(intent); 
     
    			}
            });
    dès que je clique sur l'item de la listview je veux que dans ma deuxième activité , je veux que mon élément choisi s'affiche dans un editText
    je suis un peu perdu et j'aurai besoin de votre aide

    Cordialement.

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 273
    Points : 150
    Points
    150
    Par défaut
    tu pourrai convertir ta variable en string, la faire passer en intent et la recuperer dans ton activité suivante ( dit moi si tu ne sait pas comment faire, je t'expliquerai )

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Quel est ton problème ?
    Tu passes déjà l'information à l'Activity via un extra de l'Intent. Pour le récupérer, fais simplement un getIntent().getExtra("modele"); dans l'Activity cible.

    D'ailleurs, je te suggère très fortement de mettre "modele" dans une constante pour faciliter la maintenance et éviter les fautes de frappes.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Hizin Voir le message
    Quel est ton problème ?
    Tu passes déjà l'information à l'Activity via un extra de l'Intent. Pour le récupérer, fais simplement un getIntent().getExtra("modele"); dans l'Activity cible.

    D'ailleurs, je te suggère très fortement de mettre "modele" dans une constante pour faciliter la maintenance et éviter les fautes de frappes.
    si tu me dit que l'intent que j'ai mis est bon , comment tu mes modele dans une constante et dans mon activity cible quelle est la meilleur facon d'utilisé
    getIntent().getExtra("modele");par la suite je voudrai savoir si mon intent est bien renseigné que j'utilise les bonne variables ?

  5. #5
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Je vais essayer de répondre avec ce que j'ai compris, mais s'il te plaît, fais attention à écrire dans un français au moins compréhensible, ce sera plus facile pour tout le monde.

    Mettre "modele" en constante : tu n'as pas vu les constantes en Java ?
    Déclare public static final String MODELE_KEY = "modele"; dans une classe et utilises-le ensuite ainsi : LaClasseOuLaConstanteEstDeclaree.MODELE_KEY.

    Le snippet au-dessus... essaie de le mettre à divers endroit et d'expérimenter avec.

    Pour le contrôle... ben c'est un contrôle standard. Un bête test de présence et c'est réglé. Quel est le problème ?

    Remarque : Ne le prend pas mal, mais je te suggère de laisser tomber un temps le développement Android pour te familiariser en premier lieu avec Java, ça te rendra la vie beaucoup plus facile. De plus, je te suggère d'être un poil plus curieux et de tenter un peu de ton côté avant de poser une question.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Hizin Voir le message
    Je vais essayer de répondre avec ce que j'ai compris, mais s'il te plaît, fais attention à écrire dans un français au moins compréhensible, ce sera plus facile pour tout le monde.

    Mettre "modele" en constante : tu n'as pas vu les constantes en Java ?
    Déclare public static final String MODELE_KEY = "modele"; dans une classe et utilises-le ensuite ainsi : LaClasseOuLaConstanteEstDeclaree.MODELE_KEY.

    Le snippet au-dessus... essaie de le mettre à divers endroit et d'expérimenter avec.

    Pour le contrôle... ben c'est un contrôle standard. Un bête test de présence et c'est réglé. Quel est le problème ?

    Remarque : Ne le prend pas mal, mais je te suggère de laisser tomber un temps le développement Android pour te familiariser en premier lieu avec Java, ça te rendra la vie beaucoup plus facile. De plus, je te suggère d'être un poil plus curieux et de tenter un peu de ton côté avant de poser une question.
    j'ai déjà fait des recherche mais je trouvé pas ce que je voulais pour comprendre le fonction de passé une variable a une autre

    ce que j'ai déclaré par rapport a ma liste est-il correct pour envoyer mes variable dans la deuxieme activité ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Intent intent = new Intent (MainActivity.this, Materiel.class);
                    intent.putExtra("modele", element);
                    startActivity(intent);
    et dans ma deuxième activté je veux que sa remplisse un edittext avec ma variable "modèle" !!!!

    je vais testez avec ce que tu m'a donné et je t'en remercie !!!!

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    @hizin


    salut, peut tu m'expliqué la méthode que je dois utilisé avec getIntent().getExtra("modele"); dans ma deuxieme activité
    je comprend de mieux en mieux mais la je suis bloqué

    merci

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 33
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par frederic ck Voir le message
    @hizin


    salut, peut tu m'expliqué la méthode que je dois utilisé avec getIntent().getExtra("modele"); dans ma deuxième activité
    je comprend de mieux en mieux mais la je suis bloqué

    merci
    Je débute en Android, mais je pense pouvoir te fournir une réponse.
    En vérifiant la doc je n'ai pas trouvé la méthode getExtra() que Hizin à écrit.

    D'après ce que je vois, tu envois comme extra un HashMap et tu voudrais le récupérer dans ta nouvelle activité.

    HashMap implémentant Serializable, tu peux récupérer ton HashMap via getSerializableExtra(String key);

    Voici à quoi devrait ressembler la récupération de ton HashMap dans ton activité Materiel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HashMap<String, String> element = (HashMap<String, String>) getIntent().getSerializableExtra("modele");
    N'hésite pas non plus à consulter la doc android qui est très bien fournie en infos.

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    merci de ton aide

    le getSerializableExtra(String key); je le mets aussi dans le oncreate de la deuxieme activity


    je vais voir la doc google pour voir si j'arrive a récupéré la variable

  10. #10
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Mes excuses, il manquait un "s"
    Documentation : getExtras()
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 33
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par frederic ck Voir le message
    merci de ton aide

    le getSerializableExtra(String key); je le mets aussi dans le oncreate de la deuxieme activity


    je vais voir la doc google pour voir si j'arrive a récupéré la variable
    Non c'était juste pour te donné le nom et ce qu'il attend en paramètre, je t'ai donné l'exemple plus bas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HashMap<String, String> element = (HashMap<String, String>) getIntent().getSerializableExtra("modele");

  12. #12
    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
    Conseil : utilisez un bundle dans l'extra, c'est une table de hashage justement prévue pour cela.
    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

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    Merci a tous pour vos conseils j'ai réussi a récupéré mes variables mais j'ai juste une dernière question : Est-il possible de récupérer des variables qui sont des éléments de ma base de données sans les afficher dans la Listview qui ne peut afficher que deux éléments et ainsi les récupérer dans ma deuxième vue ?

  14. #14
    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
    Oui. Il y a d'ailleurs plusieurs façon de faire. Voici l'idée si c'était des listes d'étudiants :
    Code Java : 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
    19
    20
    21
    22
    23
     
    public class EtudiantContent {
     
        public static class EtudiantItem {
     
            String nom;   //destiné à être affiché dans la listView
            String prenom;  //destiné à être affiché dans la listView
            String nationalite;  //pas destiné à être affiché dans la listView
     
            public EtudiantItem () {       }
     
        }
     
        public static List<EtudiantItem> ITEMS = new ArrayList<EtudiantItem>(); //c'est la liste des objets étudiants et c'est le plus important 
     
        static {
     
            ITEMS.add(new EtudiantItem ("Joseph", "Staline", "Russe"));
            ITEMS.add(...);
            //Peut provenir d'un Base de donnée si besoin (i.e., chargement depuis un Cursor)
        }
     
    }


    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //dans l'activité qui contient la listView
    listView1.setAdapter(new ArrayAdapter<EtudiantItem>(...,EtudiantContent.ITEMS,...)); //Peuple la listView en exploitant uniquement nom et prénom (à toi de gérer cela avec l'Adapter)
    listView1.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
     
                    Intent i = new Intent(this, Suivant.class);
                    i.putExtra("item_position_to_show", position);  //je me contente de passer la position dans la liste à l'activité suivante
                    startActivity(i);
                }
    });

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //dans l'activité suivante
     
       EtudiantItem current = EtudiantContent.ITEMS.get(getIntent().getIntExtra("item_position_to_show"));
       Log.i(current.name + ","+ current.nationalite);  //exploite le champs nationnalité
    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

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Points : 5
    Points
    5
    Par défaut
    merci de m'avoir répondu j'ai fait de cette maniere
    mais dès que j'essaye de récupéré une autre variable sa plante quand j'appuie sur la liste


    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
    19
    20
    21
    //-------------------------définition de la listeView-------------------\\
          listViewMateriel = (ListView) findViewById(R.id.listViewMateriel);
          SimpleAdapter adapter= new SimpleAdapter(this, data,
                  android.R.layout.simple_list_item_2,
                  new String[] {"Line1","Line2"},
                  new int[] {android.R.id.text1, android.R.id.text2});
          listViewMateriel.setAdapter(adapter);
     
          listViewMateriel.setOnItemClickListener(new OnItemClickListener()
          {   @Override
              public void onItemClick(AdapterView<?> parent, View view, int position, long id)
              {   Collection<String> element= data.get(position).values();
                  String id_modele[]= element.toArray(new String[3]);
                  int idModele= Integer.valueOf(id_modele[0]);
                  Intent intent = new Intent (MainActivity.this, Materiel.class);
                  intent.putExtra("element",id_modele[1]);
                  intent.putExtra("idModele",idModele);
     
                  startActivity(intent);
              }      
          });
    et ma deuxieme activité qui récupere les variable

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public class Materiel extends Activity
    {
        private static final String TAG = "Materiel";
        EditText editAdresse =null;
        EditText editAdresse1 =null;
        int idModele= 0;
        int idMarque=0;
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.materiel); 
            Log.i(TAG, "onCreate config");
            editAdresse= (EditText) findViewById(R.id.editText1);
            editAdresse1= (EditText) findViewById(R.id.editText2);
            Bundle bundle= getIntent().getExtras();
            if (bundle.containsKey("element")) editAdresse.setText(bundle.getString("element"));
            if (bundle.containsKey("idModele")) idModele=bundle.getInt("idModele");
     
        }
     
        @Override
        public boolean onCreateOptionsMenu(Menu menu)
        {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    }
    et j'ai un runselect ou je récupere mes données
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    elem.put("Line1",resultat.getString("modele")); 
    elem.put("Line2",resultat.getString("modele"));
    et quand j'essaye de récupérer un troisième NOM l'application beug

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

Discussions similaires

  1. [AJAX] Passage de variable en ajax
    Par carlatocer dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/02/2007, 14h46
  2. Problème de passage de variable
    Par Duero dans le forum Balisage (X)HTML et validation W3C
    Réponses: 18
    Dernier message: 08/09/2006, 18h00
  3. Réponses: 4
    Dernier message: 20/06/2006, 13h12
  4. problème de passage de variables par POST
    Par jeanfrancois dans le forum Langage
    Réponses: 7
    Dernier message: 03/05/2006, 13h36
  5. [FLASH MX] Problème de passage de variable
    Par mandaillou dans le forum Flash
    Réponses: 2
    Dernier message: 15/11/2005, 10h22

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