Parcelable Encountered Ioexception Writing Serializable Object
Transfiere valores entre actividades a través de Intent, admite tipos de datos básicos y objetos String y sus objetos de matriz byte, byte [], char, char [], boolean, boolean [], short, short [], int, int [] Long, long [], float, float [], double, double [], String, String [] y objetos de clase que implementan las interfaces serializables y parcelables.
package com.example.test; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener{ private Button btnSend; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnSend = (Button)findViewById(R.id.send); btnSend.setOnClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { if(v.getId() == R.id.send){ Intent intent = new Intent(this, HomeActivity.class); Bundle bundle = new Bundle(); bundle.putString("Data", "hello......."); User user = new User(); user.setAge(11); user.setName("xiaosi"); bundle.putSerializable("User", user); intent.putExtras(bundle); startActivity(intent); } } }
package com.example.test; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.widget.TextView; public class HomeActivity extends Activity { private TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); Intent intent=getIntent(); Bundle bundle=intent.getExtras(); String str=bundle.getString("Data"); User user = (User) bundle.getSerializable("User"); text=(TextView)findViewById(R.id.text); text.setText (str + "Nombre:" + user.getName () + "Edad:" + user.getAge ()); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.home, menu); return true; } }
Entonces, para pasar datos personalizados entre actividades, solo se puede implementar una interfaz serializable o parcelable.
Puede usar datos putSerializable (String, Serizlizable) de paquete o directamente usar datos putExtrr (String, Serizlizable) de intento.
Tengo la necesidad de pasar múltiples tipos de datos personalizados, así que escribí un objeto para encapsular los datos personalizados que necesito, esta clase implementa la interfaz Serizlizable. Pero hubo un error durante putExtra.
Más tarde, descubrí que para transferir datos entre Actividades, todo el contenido debe implementar la interfaz serializable, y los datos de tipo personalizado encapsulados en mi objeto no implementan esta interfaz, por lo que se produce un error.
Después de eso, dejo que el tipo personalizado implemente la interfaz serializable y no hay problema.
Personalicé un objeto TransmitData e implementé la interfaz serializable.
package com.sjf.model; import java.io.Serializable; import java.util.Date; /** * El objeto transmitido, el objeto más grande transmitido directamente a través de Socket * @author XIAOSI * */ public class TransmitData implements Serializable{ /** * */ private static final long serialVersionUID = 1L; // Tipo de mensaje enviado private TransmitType type; // de qué usuario private String fromUser; // a qué usuario private String toUser; // Contenido transmitido private User user; // Solicitar resultado private boolean isSucess; // Descripción de la solicitud, descripción de comentarios private String description; // Solicitud o tiempo de retroalimentación private Date time; public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } public boolean isSucess() { return isSucess; } public void setSucess(boolean isSucess) { this.isSucess = isSucess; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public TransmitType getType() { return type; } public void setType(TransmitType type) { this.type = type; } public String getFromUser() { return fromUser; } public void setFromUser(String fromUser) { this.fromUser = fromUser; } public String getToUser() { return toUser; } public void setToUser(String toUser) { this.toUser = toUser; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
Sin embargo, el tipo de datos personalizado Usuario en el objeto TransmitData no implementa la interfaz de serialización. <código i = 1> </ código>
Informar un error: Parcelable encontró IOException al escribir un objeto serializable (nombre = xxx)
[C ++] Definición de estructura
Recientemente usé la estructura Struct en el proyecto y descubrí que si la estructura escrita por mí mismo se usa en una biblioteca de terceros, habrá errores al copiar, &i...
Introducción al cluster Postgres-XL
Postgres-XL Es un clúster de base de datos SQL de código abierto extendido horizontalmente basado en la base de datos PostgreSQL, con suficiente flexibilidad para manejar diferentes carg...
Análisis ultrafino ConcurrentHashMap
Directorio de artículos Descripción general de ConcurrentHashMap ConcurrentHashMap bajo JDK1.8 Visión general Variable principal conseguir la operación get(Object key) pone...
Parcelable Encountered Ioexception Writing Serializable Object
Source: https://programmerclick.com/article/3294194479/
Posted by: donaldsonwifilbeem.blogspot.com
0 Response to "Parcelable Encountered Ioexception Writing Serializable Object"
Post a Comment