una tipos thread sobreescribir serializar serializacion que metodo hay guardar extender como clase java android android-intent

java - tipos - Pasar datos a través de la intención de usar Serializable



serializacion c++ (8)

Crea tu objeto personalizado e implementa Serializable. A continuación, puede usar intent.putExtra("package.name.example", <your-serializable-object>) .

En la segunda actividad, la lee usando getIntent().getSerializableExtra("package.name.example")

De lo contrario, sigue this y this página.

Implementé mi clase con serializable, pero aún así no funcionó.

Esta es mi clase:

package com.ursabyte.thumbnail; import java.io.Serializable; import android.graphics.Bitmap; public class Thumbnail implements Serializable { private static final long serialVersionUID = 1L; private String label = ""; private Bitmap bitmap; public Thumbnail(String label, Bitmap bitmap) { this.label = label; this.bitmap = bitmap; } public void set_label(String label) { this.label = label; } public String get_label() { return this.label; } public void set_bitmap(Bitmap bitmap) { this.bitmap = bitmap; } public Bitmap get_bitmap(){ return this.bitmap; } // @Override // public int compareTo(Thumbnail other) { // if(this.label != null) // return this.label.compareTo(other.get_label()); // else // throw new IllegalArgumentException(); // } }

Esto es lo que quiero pasar.

List<Thumbnail> all_thumbs = new ArrayList<Thumbnail>(); all_thumbs.add(new Thumbnail(string, bitmap)); Intent intent = new Intent(getApplicationContext(), SomeClass.class); intent.putExtra("value", all_thumbs);

Pero aún así no funcionó. No sé cómo usar Parcelable, así que uso esto en su lugar.


En kotlin : la clase de objeto implementa Serializable:

class MyClass: Serializable { //members }

En el punto donde el objeto envía:

val fragment = UserDetailFragment() val bundle = Bundle() bundle.putSerializable("key", myObject) fragment.arguments = bundle

En el fragmento, donde queremos obtener nuestro objetivo:

val bundle: Bundle? = arguments bundle?.let { val myObject = it.getSerializable("key") as MyClass myObject.memberName?.let { it1 -> showShortToast(it1) } }


Extendí la respuesta de ρяσѕρєя K para que sea un código completo y viable. Entonces, cuando termine de llenar su lista ''all_thumbs'', debe poner su contenido uno por uno en el paquete y luego en la intención:

Bundle bundle = new Bundle(); for (int i = 0; i<all_thumbs.size(); i++) bundle.putSerializable("extras"+i, all_thumbs.get(i)); intent.putExtras(bundle);

Para obtener los extras de la intención, necesita:

Bundle bundle = new Bundle(); List<Thumbnail> thumbnailObjects = new ArrayList<Thumbnail>(); // collect your Thumbnail objects for (String key : bundle.keySet()) { thumbnailObjects.add((Thumbnail) bundle.getSerializable(key)); } // for example, in order to get a value of the 3-rd object you need to: String label = thumbnailObjects.get(2).get_label();

La ventaja de Serializable es su simplicidad. Sin embargo, recomendaría que considere utilizar el método Parcelable cuando necesite transferir muchos datos, ya que Parcelable está específicamente diseñado para Android y es más eficiente que Serializable . Puede crear Parcelable clase Parcelable usando:

  1. una herramienta en línea - parcelabler
  2. un complemento para Android Studion - Android generador de código parcelable

Intente pasar la lista serializable usando Bundle.Serializable :

Bundle bundle = new Bundle(); bundle.putSerializable("value", all_thumbs); intent.putExtras(bundle);

Y en SomeClass Activity obténgalo como:

Intent intent = this.getIntent(); Bundle bundle = intent.getExtras(); List<Thumbnail> thumbs= (List<Thumbnail>)bundle.getSerializable("value");


Necesita crear un Bundle y luego usar Bundle.Serializable :

List<Thumbnail> all_thumbs = new ArrayList<Thumbnail>(); all_thumbs.add(new Thumbnail(string,bitmap)); Intent intent = new Intent(getApplicationContext(),SomeClass.class); Bundle extras = new Bundle(); extras.putSerializable("value",all_thumbs); intent.putExtras(extras);


Enviando datos:

Primero crea tus datos serializables implementando Serializable en tu clase de datos

public class YourDataClass implements Serializable { String someText="Some text"; }

Entonces ponlo en la intención

YourDataClass yourDataClass=new YourDataClass(); Intent intent = new Intent(getApplicationContext(),ReceivingActivity.class); intent.putExtra("value",yourDataClass); startActivity(intent);

Recibiendo información:

YourDataClass yourDataClass=(YourDataClass)getIntent().getSerializableExtra("value");


Este código puede ayudarte:

public class EN implements Serializable { //... you don''t need implement any methods when you implements Serializable }

Poniendo datos. Crear nueva actividad con extra:

EN enumb = new EN(); Intent intent = new Intent(getActivity(), NewActivity.class); intent.putExtra("en", enumb); //second param is Serializable startActivity(intent);

Obteniendo datos de nueva actividad:

public class NewActivity extends Activity { private EN en; @Override public void onCreate(Bundle savedInstanceState) { try { super.onCreate(savedInstanceState); Bundle extras = getIntent().getExtras(); if (extras != null) { en = (EN)getIntent().getSerializableExtra("en"); //Obtaining data } //...


Intent intent = new Intent(getApplicationContext(),SomeClass.class); intent.putExtra("value",all_thumbs); startActivity(intent);

En SomeClass.java

Bundle b = getIntent().getExtras(); if(b != null) thumbs = (List<Thumbnail>) b.getSerializable("value");