Comment envoyer un object d’une activité Android à une autre en utilisant les intentions?

Comment passer un object d’un type personnalisé d’une activité à une autre en utilisant la méthode putExtra() de la classe Intent ?

Si vous ne faites que passer des objects, alors Parcelable a été conçu pour cela. Cela demande un peu plus d’effort que d’utiliser la sérialisation native de Java, mais c’est beaucoup plus rapide (et je veux dire, WAY plus rapide).

À partir des documents, un exemple simple de mise en œuvre est:

 // simple class that just has one member property as an example public class MyParcelable implements Parcelable { private int mData; /* everything below here is for implementing Parcelable */ // 99.9% of the time you can just ignore this @Override public int describeContents() { return 0; } // write your object's data to the passed-in Parcel @Override public void writeToParcel(Parcel out, int flags) { out.writeInt(mData); } // this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public MyParcelable createFromParcel(Parcel in) { return new MyParcelable(in); } public MyParcelable[] newArray(int size) { return new MyParcelable[size]; } }; // example constructor that takes a Parcel and gives you an object populated with it's values private MyParcelable(Parcel in) { mData = in.readInt(); } } 

Notez que dans le cas où vous avez plusieurs champs à récupérer dans une plot donnée, vous devez le faire dans le même ordre que vous les avez mis (c’est-à-dire dans une approche FIFO).

Une fois que vos objects sont implémentés dans Parcelable il suffit de les mettre dans vos intentions avec putExtra () :

 Intent i = new Intent(); i.putExtra("name_of_extra", myParcelableObject); 

Ensuite, vous pouvez les récupérer avec getParcelableExtra () :

 Intent i = getIntent(); MyParcelable myParcelableObject = (MyParcelable) i.getParcelableExtra("name_of_extra"); 

Si votre classe d’object implémente Parcelable et Serializable, assurez-vous de lancer l’un des éléments suivants:

 i.putExtra("parcelable_extra", (Parcelable) myParcelableObject); i.putExtra("serializable_extra", (Serializable) myParcelableObject); 

Vous devrez sérialiser votre object dans une sorte de représentation de chaîne. Une représentation de chaîne possible est JSON, et l’un des moyens les plus simples de sérialiser vers / depuis JSON dans Android, si vous me le demandez, est via Google GSON .

Dans ce cas, vous devez mettre la valeur de retour de la chaîne (new Gson()).toJson(myObject); et récupérez la valeur de chaîne et utilisez fromJson pour la retourner dans votre object.

Si votre object n’est pas très complexe, cela ne vaut peut-être pas la peine, et vous pouvez envisager de transmettre les valeurs séparées de l’object à la place.

Vous pouvez envoyer un object sérialisable par intention

 // send where details is object ClassName details = new ClassName(); Intent i = new Intent(context, EditActivity.class); i.putExtra("Editing", details); startActivity(i); //receive ClassName model = (ClassName) getIntent().getSerializableExtra("Editing"); And Class ClassName implements Serializable { } 

Pour les situations où vous savez que vous transmettez des données dans une application, utilisez “globals” (comme les classes statiques)

Voici ce que Dianne Hackborn (hackbod – un ingénieur logiciel Google Android) a dit à ce sujet:

Pour les situations où vous savez que les activités s’exécutent dans le même processus, vous pouvez simplement partager des données via des globales. Par exemple, vous pouvez avoir un HashMap> global HashMap> et, lorsque vous créez un nouvel object MyInterpreterState, lui atsortingbuer un nom unique et le placer dans la mappe de hachage. Pour envoyer cet état à une autre activité, insérez simplement le nom unique dans la carte de hachage et, au démarrage de la seconde activité, récupérez le MyInterpreterState de la carte de hachage avec le nom qu’il reçoit.

Votre classe devrait implémenter Serializable ou Parcelable.

 public class MY_CLASS implements Serializable 

Une fois terminé, vous pouvez envoyer un object sur putExtra

 intent.putExtra("KEY", MY_CLASS_instance); startActivity(intent); 

Pour obtenir des extras, il suffit de faire

 Intent intent = getIntent(); MY_CLASS class = (MY_CLASS) intent.getExtras().getSerializable("KEY"); 

Si votre classe implémente l’utilisation de Parcelable next

 MY_CLASS class = (MY_CLASS) intent.getExtras().getParcelable("KEY"); 

J’espère que ça aide: D

Si votre classe d’object implémente Serializable , vous n’avez rien d’autre à faire, vous pouvez passer un object sérialisable.
c’est ce que j’utilise.

Réponse courte pour un besoin rapide

1. Implémentez votre classe à Serializable.

Si vous avez des classes internes, n’oubliez pas de les implémenter dans Serializable aussi!

 public class SportsData implements Serializable public class Sport implements Serializable List clickedObj; 

2. Mettez votre object dans l’intention

  Intent intent = new Intent(SportsAct.this, SportSubAct.class); intent.putExtra("sport", clickedObj); startActivity(intent); 

3. Et recevez votre object dans l’autre classe d’activité

 Intent intent = getIntent(); Sport cust = (Sport) intent.getSerializableExtra("sport"); 

Vous pouvez utiliser Android BUNDLE pour le faire.

Créez un ensemble de votre classe comme:

 public Bundle toBundle() { Bundle b = new Bundle(); b.putSsortingng("SomeKey", "SomeValue"); return b; } 

Puis passez ce bundle avec INTENT. Maintenant, vous pouvez recréer votre object de classe en passant un paquet comme

 public CustomClass(Context _context, Bundle b) { context = _context; classMember = b.getSsortingng("SomeKey"); } 

Déclarez cela dans votre classe personnalisée et utilisez-la.

Merci pour l’aide parcellable mais j’ai trouvé une solution optionnelle supplémentaire

  public class getsetclass implements Serializable { private int dt = 10; //pass any object, drwabale public int getDt() { return dt; } public void setDt(int dt) { this.dt = dt; } } 

Dans l’activité une

 getsetclass d = new getsetclass (); d.setDt(50); LinkedHashMap obj = new LinkedHashMap(); obj.put("hashmapkey", d); Intent inew = new Intent(SgParceLableSampelActivity.this, ActivityNext.class); Bundle b = new Bundle(); b.putSerializable("bundleobj", obj); inew.putExtras(b); startActivity(inew); 

Obtenir des données dans l’activité 2

  try { setContentView(R.layout.main); Bundle bn = new Bundle(); bn = getIntent().getExtras(); HashMap getobj = new HashMap(); getobj = (HashMap) bn.getSerializable("bundleobj"); getsetclass d = (getsetclass) getobj.get("hashmapkey"); } catch (Exception e) { Log.e("Err", e.getMessage()); } 

implémenter sérialisable dans votre classe

  public class Place implements Serializable{ private int id; private Ssortingng name; public void setId(int id) { this.id = id; } public int getId() { return id; } public Ssortingng getName() { return name; } public void setName(Ssortingng name) { this.name = name; } } 

Ensuite, vous pouvez transmettre cet object dans l’intention

  Intent intent = new Intent(this, SecondAct.class); intent.putExtra("PLACE", Place); startActivity(); 

dans la deuxième activité, vous pouvez obtenir des données comme celle-ci

  Place place= (Place) getIntent().getSerializableExtra("PLACE"); 

Mais lorsque les données deviennent volumineuses, cette méthode sera lente.

Vous pouvez accéder à des variables ou à des objects dans d’autres classes ou activités de deux manières.

A. firebase database

B. préférences partagées.

C. sérialisation d’object.

D. Une classe pouvant contenir des données communes peut être nommée en tant qu’utilitaires communs dont elle dépend.

E. Transmission de données via les intentions et l’interface parcellable.

Cela dépend des besoins de votre projet.

A. firebase database

SQLite est une firebase database Open Source intégrée à Android. SQLite prend en charge les fonctionnalités de firebase database relationnelles standard telles que la syntaxe SQL, les transactions et les instructions préparées.

Tutoriels – http://www.vogella.com/articles/AndroidSQLite/article.html

B. Préférences partagées

Supposons que vous vouliez stocker le nom d’utilisateur. Donc, il y aura maintenant deux choses un nom d’utilisateur clé , valeur de valeur.

Comment stocker

  // Create object of SharedPreferences. SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); //now get Editor SharedPreferences.Editor editor = sharedPref.edit(); //put your value editor.putSsortingng("userName", "stackoverlow"); //commits your edits editor.commit(); 

En utilisant putSsortingng (), putBoolean (), putInt (), putFloat (), putLong (), vous pouvez enregistrer votre dtatype souhaité.

Comment aller chercher

 SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); Ssortingng userName = sharedPref.getSsortingng("userName", "Not Available"); 

http://developer.android.com/reference/android/content/SharedPreferences.html

C. Sérialisation des objects

La serlization d’object est utilisée si nous voulons enregistrer un état d’object pour l’envoyer sur le réseau ou vous pouvez également l’utiliser.

Utilisez des haricots java et stockez-les comme l’un de ses champs et utilisez les getters et setter pour cela

Les JavaBeans sont des classes Java qui ont des propriétés. Considérez les propriétés comme des variables d’instance privées. Comme ils sont privés, la seule façon d’accéder à l’extérieur de leur classe est d’utiliser des méthodes de la classe. Les méthodes qui modifient la valeur d’une propriété sont appelées méthodes setter, et les méthodes qui récupèrent la valeur d’une propriété sont appelées méthodes getter.

 public class VariableStorage implements Serializable { private Ssortingng inSsortingng ; public Ssortingng getInSsortingng() { return inSsortingng; } public void setInSsortingng(Ssortingng inSsortingng) { this.inSsortingng = inSsortingng; } } 

Définissez la variable dans votre méthode de messagerie en utilisant

 VariableStorage variableStorage = new VariableStorage(); variableStorage.setInSsortingng(inSsortingng); 

Ensuite, utilisez l’object Serialzation pour sérialiser cet object et dans votre autre classe désérialiser cet object.

Dans la sérialisation, un object peut être représenté comme une séquence d’octets incluant les données de l’object, ainsi que des informations sur le type de l’object et les types de données stockés dans l’object.

Une fois qu’un object sérialisé a été écrit dans un fichier, il peut être lu à partir du fichier et désérialisé, ce qui signifie que les informations de type et les octets qui représentent l’object et ses données peuvent être utilisés pour recréer l’object en mémoire.

Si vous voulez un tutoriel pour ce renvoi, cliquez ici

http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html

Obtenir une variable dans d’autres classes

D. CommonUtilities

Vous pouvez créer une classe par vous-même qui peut contenir des données communes dont vous avez souvent besoin dans votre projet.

Échantillon

 public class CommonUtilities { public static Ssortingng className = "CommonUtilities"; } 

E. Transmission de données par des intentions

Veuillez vous référer à ce tutoriel pour cette option de transmission de données.

http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/

J’utilise Gson avec son api si puissant et si simple pour envoyer des objects entre les activités,

Exemple

 // This is the object to be sent, can be any object public class AndroidPacket { public Ssortingng CustomerName; //constructor public AndroidPacket(Ssortingng cName){ CustomerName = cName; } // other fields .... // You can add those functions as LiveTemplate ! public Ssortingng toJson() { Gson gson = new Gson(); return gson.toJson(this); } public static AndroidPacket fromJson(Ssortingng json) { Gson gson = new Gson(); return gson.fromJson(json, AndroidPacket.class); } } 

2 fonctions vous les ajoutez aux objects que vous souhaitez envoyer

Usage

Envoyer un object de A à B

  // Convert the object to ssortingng using Gson AndroidPacket androidPacket = new AndroidPacket("Ahmad"); Ssortingng objAsJson = androidPacket.toJson(); Intent intent = new Intent(A.this, B.class); intent.putExtra("my_obj", objAsJson); startActivity(intent); 

Recevoir en B

 @Override protected void onCreate(Bundle savedInstanceState) { Bundle bundle = getIntent().getExtras(); Ssortingng objAsJson = bundle.getSsortingng("my_obj"); AndroidPacket androidPacket = AndroidPacket.fromJson(objAsJson); // Here you can use your Object Log.d("Gson", androidPacket.CustomerName); } 

Je l’utilise presque dans tous les projets que je fais et je n’ai aucun problème de performance.

J’ai eu du mal avec le même problème. Je l’ai résolu en utilisant une classe statique, stockant toutes les données que je veux dans un HashMap. En haut, j’utilise une extension de la classe d’activité standard où j’ai remplacé les méthodes onCreate a onDestroy pour effectuer le transport de données et le nettoyage des données masquées. Certains réglages ridicules doivent être modifiés, par exemple la manipulation de l’orientation.

Annotation: Ne pas fournir d’objects généraux à transmettre à une autre activité est une douleur dans le cul. C’est comme se tirer les genoux et espérer gagner 100 mètres. “Parcable” n’est pas un substitut suffisant. Cela me fait rire … Je ne veux pas implémenter cette interface dans mon API sans technologie, car moins je veux introduire un nouveau calque … Comment cela se peut-il, que nous soyons si loin de la programmation mobile paradigme moderne …

Dans votre première activité:

 intent.putExtra("myTag", yourObject); 

Et dans votre deuxième:

 myCustomObject myObject = (myCustomObject) getIntent().getSerializableExtra("myTag"); 

N’oubliez pas de rendre votre object personnalisé Serializable:

 public class myCustomObject implements Serializable { ... } 

Une autre façon de faire est d’utiliser l’object Application (android.app.Application). Vous définissez cela dans votre fichier AndroidManifest.xml en tant que:

  

Vous pouvez alors appeler cela depuis n'importe quelle activité et enregistrer l'object dans la classe Application .

Dans la première activité:

 MyObject myObject = new MyObject(); MyApplication app = (MyApplication) getApplication(); app.setMyObject(myObject); 

Dans SecondActivity, faites:

 MyApplication app = (MyApplication) getApplication(); MyObject resortingevedObject = app.getMyObject(myObject); 

C'est pratique si vous avez des objects qui ont une scope au niveau de l'application, c'est-à-dire qu'ils doivent être utilisés dans toute l'application. La méthode Parcelable est encore meilleure si vous souhaitez contrôler explicitement la scope de l'object ou si la scope est limitée.

Cela évite toutefois l'utilisation d' Intents . Je ne sais pas si elles te vont bien. Une autre manière de procéder consiste à faire en sorte que les identifiants int des objects soient envoyés via les intentions et à récupérer les objects que je possède dans Maps dans l'object Application .

dans votre modèle de classe (Object), implémentez Serializable, par exemple:

 public class MensajesProveedor implements Serializable { private int idProveedor; public MensajesProveedor() { } public int getIdProveedor() { return idProveedor; } public void setIdProveedor(int idProveedor) { this.idProveedor = idProveedor; } } 

et votre première activité

 MensajeProveedor mp = new MensajeProveedor(); Intent i = new Intent(getApplicationContext(), NewActivity.class); i.putExtra("mensajes",mp); startActivity(i); 

et votre deuxième activité (NewActivity)

  MensajesProveedor mensajes = (MensajesProveedor)getIntent().getExtras().getSerializable("mensajes"); 

bonne chance!!

 public class SharedBooking implements Parcelable{ public int account_id; public Double betrag; public Double betrag_effected; public int taxType; public int tax; public Ssortingng postingText; public SharedBooking() { account_id = 0; betrag = 0.0; betrag_effected = 0.0; taxType = 0; tax = 0; postingText = ""; } public SharedBooking(Parcel in) { account_id = in.readInt(); betrag = in.readDouble(); betrag_effected = in.readDouble(); taxType = in.readInt(); tax = in.readInt(); postingText = in.readSsortingng(); } public int getAccount_id() { return account_id; } public void setAccount_id(int account_id) { this.account_id = account_id; } public Double getBetrag() { return betrag; } public void setBetrag(Double betrag) { this.betrag = betrag; } public Double getBetrag_effected() { return betrag_effected; } public void setBetrag_effected(Double betrag_effected) { this.betrag_effected = betrag_effected; } public int getTaxType() { return taxType; } public void setTaxType(int taxType) { this.taxType = taxType; } public int getTax() { return tax; } public void setTax(int tax) { this.tax = tax; } public Ssortingng getPostingText() { return postingText; } public void setPostingText(Ssortingng postingText) { this.postingText = postingText; } public int describeContents() { // TODO Auto-generated method stub return 0; } public void writeToParcel(Parcel dest, int flags) { dest.writeInt(account_id); dest.writeDouble(betrag); dest.writeDouble(betrag_effected); dest.writeInt(taxType); dest.writeInt(tax); dest.writeSsortingng(postingText); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public SharedBooking createFromParcel(Parcel in) { return new SharedBooking(in); } public SharedBooking[] newArray(int size) { return new SharedBooking[size]; } }; } 

Passer les données:

 Intent intent = new Intent(getApplicationContext(),YourActivity.class); Bundle bundle = new Bundle(); i.putParcelableArrayListExtra("data", (ArrayList< ? extends Parcelable>) dataList); intent.putExtras(bundle); startActivity(intent); 

Récupération des données:

 Bundle bundle = getIntent().getExtras(); dataList2 = getIntent().getExtras().getParcelableArrayList("data"); 

La solution la plus simple que j’ai trouvée est de créer une classe avec des membres de données statiques avec des getters.

définir à partir d’une activité et obtenir d’une autre activité cet object.

activité A

 mytestclass.staticfunctionSet("","",""..etc.); 

activité b

 mytestclass obj= mytestclass.staticfunctionGet(); 

vous pouvez utiliser les méthodes putExtra (Serializable ..) et getSerializableExtra () pour passer et récupérer des objects de votre type de classe; vous devrez marquer votre classe Serializable et vous assurer que toutes vos variables membres sont sérialisables aussi …

Créer une application Android

Fichier >> Nouveau >> Application Android

Entrez le nom du projet: android-pass-object-to-activity

Pakcage: com.hmkcode.android

Gardez les autres sélections de défaut, allez ensuite jusqu’à ce que vous atteigniez Terminer

Avant de commencer à créer l’application, nous devons créer la classe POJO «Personne» que nous utiliserons pour envoyer un object d’une activité à une autre. Notez que la classe implémente l’interface Serializable.

Person.java

 package com.hmkcode.android; import java.io.Serializable; public class Person implements Serializable{ private static final long serialVersionUID = 1L; private Ssortingng name; private int age; // getters & setters.... @Override public Ssortingng toSsortingng() { return "Person [name=" + name + ", age=" + age + "]"; } } 

Deux mises en page pour deux activités

activity_main.xml

              

activity_another.xml

    

Deux classes d’activités

1) ActivitéMain.java

 package com.hmkcode.android; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity implements OnClickListener { Button btnPassObject; EditText etName, etAge; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnPassObject = (Button) findViewById(R.id.btnPassObject); etName = (EditText) findViewById(R.id.etName); etAge = (EditText) findViewById(R.id.etAge); btnPassObject.setOnClickListener(this); } @Override public void onClick(View view) { // 1. create an intent pass class name or intnet action name Intent intent = new Intent("com.hmkcode.android.ANOTHER_ACTIVITY"); // 2. create person object Person person = new Person(); person.setName(etName.getText().toSsortingng()); person.setAge(Integer.parseInt(etAge.getText().toSsortingng())); // 3. put person in intent data intent.putExtra("person", person); // 4. start the activity startActivity(intent); } } 

2) Une autre activité.java

 package com.hmkcode.android; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class AnotherActivity extends Activity { TextView tvPerson; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_another); // 1. get passed intent Intent intent = getIntent(); // 2. get person object from intent Person person = (Person) intent.getSerializableExtra("person"); // 3. get reference to person textView tvPerson = (TextView) findViewById(R.id.tvPerson); // 4. display name & age on textView tvPerson.setText(person.toSsortingng()); } } 
 Intent i = new Intent(); i.putExtra("name_of_extra", myParcelableObject); startACtivity(i); 

Je sais que c’est en retard mais c’est très simple. Tout ce que vous avez à faire est de laisser votre classe implémenter Serializable comme

 public class MyClass implements Serializable{ } 

alors vous pouvez passer à une intention comme

 Intent intent=...... MyClass obje=new MyClass(); intent.putExtra("someSsortingngHere",obje); 

Pour l’obtenir simple appel

 MyClass objec=(MyClass)intent.getExtra("theSsortingng"); 

En utilisant la bibliothèque Gson de Google, vous pouvez passer un object à une autre activité. En fait, nous convertirons un object sous forme de chaîne json et après avoir passé à une autre activité, nous le convertirons à nouveau en object comme ceci

Considérez une classe de haricots comme ça

  public class Example { private int id; private Ssortingng name; public Example(int id, Ssortingng name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public Ssortingng getName() { return name; } public void setName(Ssortingng name) { this.name = name; } } 

Nous devons passer l’object de la classe Example

 Example exampleObject=new Example(1,"hello"); Ssortingng jsonSsortingng = new Gson().toJson(exampleObject); Intent nextIntent=new Intent(this,NextActivity.class); nextIntent.putExtra("example",jsonSsortingng ); startActivity(nextIntent); 

Pour la lecture, nous devons effectuer l’opération inverse dans NextActivity

  Example defObject=new Example(-1,null); //default value to return when example is not available Ssortingng defValue= new Gson().toJson(defObject); Ssortingng jsonSsortingng=getIntent().getExtras().getSsortingng("example",defValue); //passed example object Example exampleObject=new Gson().fromJson(jsonSsortingng,Example .class); 

Add this dependancy in gradle

 comstack 'com.google.code.gson:gson:2.6.2' 

The simplest would be to just use the following where the item is a ssortingng:

 intent.putextra("selected_item",item) 

For receiving:

 Ssortingng name = data.getSsortingngExtra("selected_item"); 

If you have a singleton class (fx Service) acting as gateway to your model layer anyway, it can be solved by having a variable in that class with getters and setters for it.

In Activity 1:

 Intent intent = new Intent(getApplicationContext(), Activity2.class); service.setSavedOrder(order); startActivity(intent); 

In Activity 2:

 private Service service; private Order order; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_quality); service = Service.getInstance(); order = service.getSavedOrder(); service.setSavedOrder(null) //If you don't want to save it for the entire session of the app. } 

In Service:

 private static Service instance; private Service() { //Constructor content } public static Service getInstance() { if(instance == null) { instance = new Service(); } return instance; } private Order savedOrder; public Order getSavedOrder() { return savedOrder; } public void setSavedOrder(Order order) { this.savedOrder = order; } 

This solution does not require any serialization or other “packaging” of the object in question. But it will only be beneficial if you are using this kind of architecture anyway.

By far the easiest way IMHO to parcel objects. You just add an annotation tag above the object you wish to make parcelable.

An example from the library is below https://github.com/johncarl81/parceler

 @Parcel public class Example { Ssortingng name; int age; public Example(){ /*Required empty bean constructor*/ } public Example(int age, Ssortingng name) { this.age = age; this.name = name; } public Ssortingng getName() { return name; } public int getAge() { return age; } } 

First implement Parcelable in your class. Then pass object like this.

SendActivity.java

 ObjectA obj = new ObjectA(); // Set values etc. Intent i = new Intent(this, MyActivity.class); i.putExtra("com.package.ObjectA", obj); startActivity(i); 

ReceiveActivity.java

 Bundle b = getIntent().getExtras(); ObjectA obj = b.getParcelable("com.package.ObjectA"); 

The package ssortingng isn’t necessary, just the ssortingng needs to be the same in both Activities

REFERENCE

Start another activity from this activity pass parameters via Bundle Object

 Intent intent = new Intent(getBaseContext(), YourActivity.class); intent.putExtra("USER_NAME", "xyz@gmail.com"); startActivity(intent); 

Resortingeve on another activity (YourActivity)

 Ssortingng s = getIntent().getSsortingngExtra("USER_NAME"); 

This is ok for simple kind data type. But if u want to pass complex data in between activity u need to serialize it first.

Here we have Employee Model

 class Employee{ private Ssortingng empId; private int age; print Double salary; getters... setters... } 

You can use Gson lib provided by google to serialize the complex data like this

 Ssortingng strEmp = new Gson().toJson(emp); Intent intent = new Intent(getBaseContext(), YourActivity.class); intent.putExtra("EMP", strEmp); startActivity(intent); Bundle bundle = getIntent().getExtras(); Ssortingng empStr = bundle.getSsortingng("EMP"); Gson gson = new Gson(); Type type = new TypeToken() { }.getType(); Employee selectedEmp = gson.fromJson(empStr, type); 

If you are not very particular about using the putExtra feature and just want to launch another activity with objects, you can check out the GNLauncher ( https://github.com/noxiouswinter/gnlib_android/wiki#gnlauncher ) library I wrote in an attempt to make this process more straight forward.

GNLauncher makes sending objects/data to an Activity from another Activity etc as easy as calling a function in the Activity with the required data as parameters. It introduces type safety and removes all the hassles of having to serialize, attaching to the intent using ssortingng keys and undoing the same at the other end.

POJO class “Post ” (Note that it is implemented Serializable)

 package com.example.booklib; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import android.graphics.Bitmap; public class Post implements Serializable{ public Ssortingng message; public Ssortingng bitmap; List commentList = new ArrayList(); public Ssortingng getMessage() { return message; } public void setMessage(Ssortingng message) { this.message = message; } public Ssortingng getBitmap() { return bitmap; } public void setBitmap(Ssortingng bitmap) { this.bitmap = bitmap; } public List getCommentList() { return commentList; } public void setCommentList(List commentList) { this.commentList = commentList; } } 

POJO class “Comment” (Since being a member of Post class,it is also needed to implement the Serializable)

  package com.example.booklib; import java.io.Serializable; public class Comment implements Serializable{ public Ssortingng message; public Ssortingng fromName; public Ssortingng getMessage() { return message; } public void setMessage(Ssortingng message) { this.message = message; } public Ssortingng getFromName() { return fromName; } public void setFromName(Ssortingng fromName) { this.fromName = fromName; } } 

Then in your activity class, you can do as following to pass the object to another activity.

 ListView listview = (ListView) findViewById(R.id.post_list); listview.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView< ?> parent, View view, int position, long id) { Post item = (Post)parent.getItemAtPosition(position); Intent intent = new Intent(MainActivity.this,CommentsActivity.class); intent.putExtra("post",item); startActivity(intent); } }); 

In your recipient class “CommentsActivity” you can get the data as the following

 Post post =(Post)getIntent().getSerializableExtra("post");