Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo pasar un objeto personalizado en Bundle?

Estoy tratando de pasar mi propio objeto personalizado en un paquete:

Bundle b = new Bundle(); STMessage message = (STMessage)a.getAdapter().getItem(position); b.putObject("message",message); 

Tengo el error:

 The method putObject(String, Object) is undefined for the type Bundle 

  • Código de tipo desconocido del paquete
  • Mostrar mensaje después de instalar el paquete
  • Pasar datos entre fragmentos
  • Ejemplo simple para Intent y Bundle
  • Monodroid poniendo objetos parcelables en un paquete
  • Enviar paquete con transacción de fragmentos
  • ¿Hay algunos límites en el paquete android?
  • Cómo pasar un valor de un fragmento a otro en Android?
  • 4 Solutions collect form web for “¿Cómo pasar un objeto personalizado en Bundle?”

    Una forma es que su objeto personalizado implemente la interfaz Parcelable y utilice Bundle.putParcelable/Bundle.getParcelable

    Haga que su objeto personalizado Parcelable o Serializable luego use putParcelable o putSerializable.

    Dependiendo de la complejidad de su objeto uno u otro puede ser más fácil.

    Clase modelo

     package com.sam.bundleobjectpass; import java.io.Serializable; /** * Created by Samir on 31.8.2016. */ public class Model implements Serializable { private String name; private String surName; private int age; public Model(String name, String surName, int age) { this.name = name; this.surName = surName; this.age = age; } public String getName() { return name; } public String getSurName() { return surName; } public int getAge() { return age; } } 

    Actividad principal

     public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Model model = new Model("Sam", "Sami",32); Intent i = new Intent(MainActivity.this, ReceiverActivity.class); i.putExtra("Editing", model); // sending our object startActivity(i); } } 

    ReceptorActividad

     public class ReceiverActivity extends Activity { TextView txt_name; TextView txt_surname; TextView txt_age; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); txt_name = (TextView)findViewById(R.id.txt_name); txt_surname = (TextView)findViewById(R.id.txt_surname); txt_age = (TextView)findViewById(R.id.txt_age); // receiving our object Model model = (Model) getIntent().getSerializableExtra("Editing"); txt_name.setText(model.getName()); txt_surname.setText(model.getSurName()); txt_age.setText(""+model.getAge()); } } 

    Como dijo Ryan. Además, si sólo desea pasar un objeto en un kill suave, considere utilizar onRetainConfigurationInstance y getLastNonConfigurationInstance para pasar el objeto serializable. El árbol de objetos completo debe ser serializable. Si está pasando el objeto a través de una intención, considere refactorizar el código de objeto a un código Parceable posteriormente, una vez que la arquitectura se haya estabilizado. Por último, considere el uso del nombre completo de la clase al almacenar el objeto en el Bundle como en:

     inPWState= (PasswordState) getIntent().getSerializableExtra("jalcomputing.confusetext.PasswordState"); 

    Espero que ayude. JAL

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.