Aller au contenu

[Résolu] Passer un objet entre 2 activity


Am_Me

Recommended Posts

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é par Am_Me
Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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é par Am_Me
Lien vers le commentaire
Partager sur d’autres sites

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);

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...