Comment transmettre un objet à une autre activité?

Je dois passer un objet de classe à une autre activité par intention. Voici mon code de classe:

public class Model { private String Name; private ArrayList<Trim> trim; public String getName() { return Name; } public void setName(String Name) { this.Name = Name; } public ArrayList<Trim> getTrim() { return trim; } public void setTrim(ArrayList<Trim> trim) { this.trim = trim; } } 

  • Quand utiliser synchronisé en Java
  • Comment personnaliser l'arrière-plan de l'élément et la couleur du texte de l'élément à l'intérieur de NavigationView?
  • Android: LoaderCallbacks.OnLoadFinished appelle deux fois
  • Une similitude perceptuelle entre deux séquences audio
  • Public ou privé, est-ce vraiment important avec les variables Android
  • Layout Android aligner le fond
  • Android Volley POST chaîne dans le corps
  • Google map cluster avec direction
  • Quelles étiquettes NFC utilisent le support Nexus 7? (2012)
  • Vérifiez si l'application est ouverte pendant un événement GCM onMessage?
  • Comment animer la traduction d'une vue
  • Android studio ne rafraîchit pas les nouvelles versions
  • 3 Solutions collect form web for “Comment transmettre un objet à une autre activité?”

    Pour passer un objet à une autre activité, vous devez implémenter Parcelable.

    Examinez les classes partagables pour Android avec attention. Ici, ils utilisent Hashmap pour stocker les valeurs et passer l'objet à une autre classe.

    OU


    Faire une classe, ObjectA . En cela, j'ai utilisé toutes les méthodes setter et getter.

     package com.ParcableExample.org; import android.os.Parcel; import android.os.Parcelable; /** * A basic object that can be parcelled to * transfer between objects. */ public class ObjectA implements Parcelable { private String strValue = null; private int intValue = 0; /** * Standard basic constructor for non-parcel * object creation. */ public ObjectA() { } /** * * Constructor to use when re-constructing object * from a parcel. * * @param in a parcel from which to read this object. */ public ObjectA(Parcel in) { readFromParcel(in); } /** * Standard getter * * @return strValue */ public String getStrValue() { return this.strValue; } /** * Standard setter * * @param strValue */ public void setStrValue(String strValue) { this.strValue = strValue; } /** * Standard getter * * @return intValue */ public Integer getIntValue() { return this.intValue; } /** * Standard setter * * @param strValue */ public void setIntValue(Integer intValue) { this.intValue = intValue; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { // We just need to write each field into the // parcel. When we read from parcel, they // will come back in the same order dest.writeString(this.strValue); dest.writeInt(this.intValue); } /** * * Called from the constructor to create this * object from a parcel. * * @param in parcel from which to re-create object. */ public void readFromParcel(Parcel in) { // We just need to read back each // field in the order that it was // written to the parcel this.strValue = in.readString(); this.intValue = in.readInt(); } /** * * This field is needed for Android to be able to * create new objects, individually or as arrays. * * This also means that you can use use the default * constructor to create the object and use another * method to hyrdate it as necessary. */ @SuppressWarnings("unchecked") public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public ObjectA createFromParcel(Parcel in) { return new ObjectA(in); } @Override public Object[] newArray(int size) { return new ObjectA[size]; } }; } 

    Ensuite, créez une activité qui permet d'envoyer l'objet à une autre activité.

     package com.ParcableExample.org; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class ParcableExample extends Activity { private Button btnClick; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initControls(); } private void initControls() { btnClick = (Button)findViewById(R.id.btnClick); btnClick.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { ObjectA obj = new ObjectA(); obj.setIntValue(1); obj.setStrValue("Chirag"); Intent i = new Intent(ParcableExample.this,MyActivity.class); i.putExtra("com.package.ObjectA", obj); startActivity(i); } }); } } 

    Maintenant, créez-vous une autre activité qui lisent l'Objet et obtenez la valeur de cela.

     package com.ParcableExample.org; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MyActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Bundle bundle = getIntent().getExtras(); ObjectA obj = bundle.getParcelable("com.package.ObjectA"); Log.i("---------- Id ",":: "+obj.getIntValue()); Log.i("---------- Name ",":: "+obj.getStrValue()); } } 

    Vous devez implémenter Serializable dans votre classe Model . Ensuite, pour passer un objet Model de l' Activity source à l' Activity de destination, utilisez le code suivant dans l' Activity source:

     Model objModel = new Model(); Intent modelActivity = (Model.this, detail.class); intent.putExtra("ModelObject", objModel); 

    Et ce code dans l' Activity destination:

     Model modelObject = getIntent().getSerializableExtra("ModelObject"); 

    Votre classe doit implémenter l'interface Parcelable , puis vous pouvez l'envoyer à une autre Activity utilisant:

     MyClass myObject; //... intent=new Intent(this, MyAnotherActivity.class); intent.putExtra("mydata", (Parcelable )myObject); this.startActivity(intent); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.