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 

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.