Am_Me Posté(e) 20 juin 2013 Share Posté(e) 20 juin 2013 (modifié) Bonjour a tous (desole pour les accent je suis sur un qwerty) J'aimerai savoir qu'elle est la meilleur facon de passer un objet entre 2 vues J'ai lui 2 facons dont 2 qui ne marchent pas personnellement chez moi car je recupere a chaque fois un objet nul. J'ai essaye scerializable et parcelable J'aimerai utiliser tout simplement les singletons vu qu'au dessus les 2 methodes ne marchent pas Mon appli contient une listview avec des lignes etc.... Chaque ligne contient un objet toto (string,string,url) ACTIVITY VUEprincipale Ligne 0 : toto Ligne 1 : toto1 Si je clique sur ligne 1 je devrai me retrouve sur une vue qui me recapitule tout les element de l'objet toto1 En gros : ACTIVITY VUEdetaille Votre nom string Votre prenom string Votre Url url Mon probleme est que j'aimerai dans ACTIVITY VUEdetaille avoir un pointeur vers ACTIVITY VUEprincipale Comment faire ? Merci cdt A.M MAJ : pour le parcelable j'ai ca : W/Bundle: Key work expected Parcelable but value was a java.lang.Long. The default value <null> was returned. Pourtant ma key = "monnomObjet" je vois par pourquoi il parle de Long Modifié 20 juin 2013 par Am_Me Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 20 juin 2013 Share Posté(e) 20 juin 2013 Bonjour, La meilleure façon de passer un objet entre 2 Activities est bien d'utiliser les Parcelables, ça fonctionne en général très bien. Comment fais-tu le passage / la récupération de ton objet ? Une autre façon de faire le lien entre les deux Activities serait de passer, non pas l'objet, mais l'identifiant de l'objet, et cet objet étant accessible par les deux Activities, via un Service, une base de données, un ContentProvider, ... par ex. Par contre, oublie la méthode du singleton et autres références statiques, cela va à l'encontre de la façon dont fonctionne Android (c'est lui qui gère le cycle de vie de tes composants), et ça ne t’amènerai que des problèmes... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Am_Me Posté(e) 20 juin 2013 Auteur Share Posté(e) 20 juin 2013 (modifié) Alors je suis en stage je vais poster le code de l'intent J'ai du me tromper c'est sur mais je vois pas ou MAJ : MA classe public class Work implements Parcelable Activity 1 //Lors d'une clique d'une ligne du tableau je veux envoyer un work Intent intent = new Intent(Activity1.this, Activity2.class); String keyWork = "work"; intent.putExtra(keyWork, works.getItemId(position)); startActivity(intent); Activity 2 Intent i = getIntent(); String keyWork = "work"; Work work = getIntent().getExtras().getParcelable(keyWork); MAJ 2 Ca c'est le code du parcelable public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { // private long identifier; parcel.writeLong(identifier); // private String nom; parcel.writeString(nom); } public static final Parcelable.Creator<Work> CREATOR = new Parcelable.Creator<Work>() { @Override public Work createFromParcel(Parcel source) { return new Work(source); } @Override public Work[] newArray(int size) { return new Work; } }; public Work(Parcel in) { this.identifier = in.readLong(); this.nom = in.readString(); } } Modifié 20 juin 2013 par Am_Me Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 20 juin 2013 Share Posté(e) 20 juin 2013 Dans l'Activity 1, tu ne passes pas ton objet (getItem), mais l'identifiant de ton objet (getItemId); normal ensuite qu'il te dise que c'est un Long Il faut faire cela (en supposant que works est un Adapter): Intent intent = new Intent(Activity1.this, Activity2.class); String keyWork = "work"; intent.putExtra(keyWork, works.getItem(position)); startActivity(intent); 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Am_Me Posté(e) 20 juin 2013 Auteur Share Posté(e) 20 juin 2013 Ololo l'erreur :wacko: Merci ENORMEMENT pour la qualite et rapidité de la réponse bon le parcebale c'est bien en fait :D Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.