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 données d'une activité à une autre


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Passer des données d'une activité à une autre
    Bonjour,

    J'ai cherché sur internet comment faire pour passer des données d'une activité à une autre, j'ai trouvé quelques solutions, comme:
    utiliser ( putExtra("key", string)) pour ajouter la valeur dans l'intent, et (getStringExtra("key"); ) pour la récupérer.

    mais moi je cherche à passer une liste d'information de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
    d'une activité à une autre.

    merci d'avance.

  2. #2
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 786
    Points : 18 794
    Points
    18 794
    Par défaut
    Je crois qu'il faut que ton objet soit Parcelable :
    http://developer.android.com/referen....Parcelable%29

    Donc c'est jouable.
    Je suppose qu'il faut que la classe de ton objet implements Parcelable.

  3. #3
    Expert éminent

    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
    Points : 9 149
    Points
    9 149
    Par défaut
    Pour compléter ce que vient de te préciser thierrybenji

    http://developer.android.com/referen...rcelable%3E%29
    public Intent putParcelableArrayListExtra (String name, ArrayList<? extends Parcelable> value)
    Since: API Level 1

    Add extended data to the intent. The name must include a package prefix, for example the app com.android.contacts would use names like "com.android.contacts.ShowAll".
    Parameters
    name The name of the extra data, with package prefix.
    value The ArrayList data value.
    Returns

    * Returns the same Intent object, for chaining multiple calls into a single statement.

    See Also

    * putExtras(Intent)
    * removeExtra(String)
    * getParcelableArrayListExtra(String)

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    merci de vos réponse.
    en fait j'ai testé mon code avec les méthodes que vous m'avez dit, mais ca marche pas. voici ce que j'ai fait:
    Activité 1 : class1.java
    j'ai crée cette méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public Intent putParcelableArrayListExtra (String name, ArrayList<HashMap<String, String>> liste)
    	{
    		Intent i;
    		i = new Intent(this, class2.class);
    		i = i.putExtra(name, liste);
    		startActivity(i);
    		return i;
     
    	}
    et je l'ai utilisé dans ma première classe comme suivant pour passer les données à l'activité "class2.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    putParcelableArrayListExtra("list", liste);
    avec liste est ma liste que je veux envoyer.

    Activité 2 : class2.java
    j'ai crée la méthodes qui va lire le contenu de l'intent comme suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public ArrayList<HashMap<String, String>> getParcelableArrayListExtra (String name)
    	{	
    		return(getParcelableArrayListExtra(name));		
     
    	}
    et j'ai appelé cette méthodes dans ma classe pour récupérer la liste par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ArrayList<HashMap<String, String>> liste2 = new ArrayList<HashMap<String, String>>();
    liste2 = getParcelableArrayListExtra ("list");
    merci d'avance.

  5. #5
    Membre averti Avatar de _Xavier_
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2009
    Messages : 311
    Points : 390
    Points
    390
    Par défaut
    La méthode qui s'approche le plus de ton problème est celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)
    Le ArrayList est accepté mais ton HashMap pose problème, il n'est pas parcelable. Pour faire plus simple tu peux créer un objet qui a deux attributs de type String correspondant à la clé et à la valeur des éléments de ton HashMap pour avoir au final une structure qui sera de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<ArrayList<NewObject>>
    Et pour NewObject qui doit étendre Parcelable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    private String key; 
    private String value;
    ...

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    merci de votre réponse.

    en fait j'ai crée un objet comme vous m'avez dit ayant comme attributs : key et value et aussi des getters et des setters.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Objet {
    private String key; 
    private String value;
     
    ......
    }
    dans l'activité 1, j'ai mis:
    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
     
    ArrayList<Objet> liste1 = new ArrayList<Objet>();
    Objet map2=  newObjet();;
    map2.setKey("key");
    map2.setValue(getStr());
    liste1.add(map2);
    putParcelableArrayListExtra("list", liste1);
    startActivity(i);
    );
    ......
    	public Intent putParcelableArrayListExtra (String name, ArrayList<Objet> liste)
    	{
    		Intent i;
    		i = new Intent(this, class2.class);
    		i = i.putExtra(name, liste);
    		startActivity(i);
    		return i;
     
    	}
    dans l'activité 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ArrayList<HashMap<String, String>> liste2 = new ArrayList<HashMap<String, String>>();
     
    liste2 = getParcelableArrayListExtra ("list");
     
    .........

    mais ca marche pas. je sais pas si c'est correcte ce que j'ai fait ou pas.
    merci de vos aides.

  7. #7
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 786
    Points : 18 794
    Points
    18 794
    Par défaut
    C'est plus un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Objet implements Parcelable
    {
     
    }

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    j'ai modifié la classe Objet, et rien n'a changé:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    public class Objet implements Parcelable, Serializable{
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private String key;
    	private String value;
     
    	public String getKey() {
    		return key;
    	}
     
    	public void setKey(String key) {
    		this.key = key;
    	}
     
    	public String getValue() {
    		return value;
    	}
     
    	public void setValue(String value) {
    		this.value = value;
    	}
    	@Override
    	public int describeContents() {
     
    		return 0;
    	}
    	@Override
    	public void writeToParcel(Parcel dest, int flags) {
     
    		dest.writeInt(this.describeContents());
    		dest.writeSerializable(this);
     
     
    	}
     
    }
    je sais pas qu'est ce que je vais faire avec deux méthodes describeContents() et writeToParcel.

  9. #9
    Membre averti Avatar de _Xavier_
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2009
    Messages : 311
    Points : 390
    Points
    390
    Par défaut
    Il maque des choses dans ta classe, j'ai fait ici un exemple que je n'ai pas testé.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    public class MapObject implements Parcelable{
    	private String key;
    	private String value;
     
    	public static final Parcelable.Creator<MapObject> CREATOR = new Parcelable.Creator<MapObject>() {
    		public MapObject createFromParcel(Parcel in) {
    			return new MapObject(in);
    		}
     
    		public MapObject[] newArray(int size) {
    			return new MapObject[size];
    		}
    	};	
     
    	private MapObject(Parcel in) {
    		readFromParcel(in);
    	}
     
    	public void readFromParcel(Parcel in) {		
    		key = in.readString();
    		value = in.readString();
    	}
     
    	@Override
    	public void writeToParcel(Parcel dest, int flags) {		
    		dest.writeString(key);
    		dest.writeString(value);
     
    	}
     
    	@Override
    	public int describeContents() {
     
    		return 0;
    	}	
     
    	public String getKey() {
    		return key;
    	}
     
    	public void setKey(String key) {
    		this.key = key;
    	}
     
    	public String getValue() {
    		return value;
    	}
     
    	public void setValue(String value) {
    		this.value = value;
    	}	
     
    }

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/05/2012, 00h52
  2. [Joomla!] Transférer une tables de la base des données d'un composant à un autre
    Par Mouna1983 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 15/10/2008, 18h52
  3. Réponses: 8
    Dernier message: 04/04/2006, 17h29
  4. Réponses: 9
    Dernier message: 21/02/2006, 09h06
  5. passer des données a une autre page php
    Par questionneuse dans le forum Langage
    Réponses: 10
    Dernier message: 25/01/2006, 00h56

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