Jump to content

[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

Edited by Am_Me
Link to comment
Share on other 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...

Link to comment
Share on other 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();

}

}

Edited by Am_Me
Link to comment
Share on other 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
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...