Cómo pasar un objeto de una actividad a otra en Android

Resuelto Adil Bhatty asked hace 54 años • 35 respuestas

Estoy intentando trabajar para enviar un objeto de mi clase de cliente desde uno Activityy mostrarlo en otro Activity.

El código para la clase de cliente:

public class Customer {

    private String firstName, lastName, address;
    int age;

    public Customer(String fname, String lname, int age, String address) {

        firstName = fname;
        lastName = lname;
        age = age;
        address = address;
    }

    public String printValues() {

        String data = null;

        data = "First Name :" + firstName + " Last Name :" + lastName
        + " Age : " + age + " Address : " + address;

        return data;
    }
}

Quiero enviar su objeto de uno Activitya otro y luego mostrar los datos en el otro Activity.

¿Cómo puedo lograr eso?

Adil Bhatty avatar Jan 01 '70 08:01 Adil Bhatty
Aceptado

Una opción podría ser permitir que su clase personalizada implemente la Serializableinterfaz y luego pueda pasar instancias de objetos en la intención adicional usando la putExtra(Serializable..)variante del Intent#putExtra()método.

Código real :

En su modelo/clase de objeto personalizado:

public class YourClass implements Serializable {

En otra clase donde se utiliza el modelo/clase personalizada:

//To pass:
intent.putExtra("KEY_NAME", myObject);

myObject es de tipo "YourClass". Luego, para recuperar de otra actividad, use getSerializableExtra para obtener el objeto usando el mismo nombre de clave. Y se necesita encasillar en YourClass:

// To retrieve object in second Activity
myObject = (YourClass) getIntent().getSerializableExtra("KEY_NAME");

Nota: Asegúrese de que cada clase anidada de su clase personalizada principal haya implementado una interfaz serializable para evitar excepciones de serialización. Por ejemplo:

class MainClass implements Serializable {
    
    public MainClass() {}

    public static class ChildClass implements Serializable {
         
        public ChildClass() {}
    }
}
Samuh avatar Apr 29 '2010 10:04 Samuh

Implementa tu clase con Serializable. Supongamos que esta es su clase de entidad:

import java.io.Serializable;

@SuppressWarnings("serial") //With this annotation we are going to hide compiler warnings
public class Deneme implements Serializable {

    public Deneme(double id, String name) {
        this.id = id;
        this.name = name;
    }

    public double getId() {
        return id;
    }

    public void setId(double id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private double id;
    private String name;
}

Estamos enviando el objeto llamado denede la actividad X a la actividad Y. En algún lugar de la actividad X;

Deneme dene = new Deneme(4,"Mustafa");
Intent i = new Intent(this, Y.class);
i.putExtra("sampleObject", dene);
startActivity(i);

En la actividad Y obtenemos el objeto.

Intent i = getIntent();
Deneme dene = (Deneme)i.getSerializableExtra("sampleObject");

Eso es todo.

Mustafa Güven avatar Oct 19 '2011 20:10 Mustafa Güven

Utilice gson para convertir su objeto a JSON y pasarlo a través de la intención. En la nueva Actividad, convierta el JSON en un objeto.

En tu build.gradle, agrega esto a tus dependencias.

implementation 'com.google.code.gson:gson:2.8.4'

En su Actividad, convierta el objeto a json-string:

Gson gson = new Gson();
String myJson = gson.toJson(vp);
intent.putExtra("myjson", myjson);

En su Actividad receptora, convierta la cadena json nuevamente al objeto original:

Gson gson = new Gson();
YourObject ob = gson.fromJson(getIntent().getStringExtra("myjson"), YourObject.class);

Para Kotlin es más o menos lo mismo.

pasar los datos

val gson = Gson()
val intent = Intent(this, YourActivity::class.java)
intent.putExtra("identifier", gson.toJson(your_object))
startActivity(intent)

Recibir los datos

val gson = Gson()
val yourObject = gson.fromJson<YourObject>(intent.getStringExtra("identifier"), YourObject::class.java)
khalid avatar Oct 31 '2013 07:10 khalid