estoy golpeando una pared de ladrillo con la serialización de una subclase de Ubicación en Android/javasubclase de la clase Serializable padre que no serializable
ubicación no es serializable. Tengo una primera subclase llamada FALocation que no tiene variables de instancia. Lo he declarado serializable.
entonces tengo una llamada waypoint segunda clase que tiene este aspecto:
public class Waypoint extends FALocation implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/* Class variables *******************************************************/
private static int CLASS_VERSION=1; //Used to version parcels
/* Instance variables ****************************************************/
private transient String type=DataHelper.PT_TYPE_US;
private transient String country;
private transient String name=null;
private transient String description=null;
private transient int elevation = 0;
private transient int population = 0; // Afterthought, added to match the DB structure
/* Constructors **********************************************************/
public Waypoint() {
super();
}
public Waypoint(double lat, double lon, String name, String description) {
super(lat, lon);
this.setName(name);
this.setDescription(description);
}
public Waypoint(Location l) {
super(l);
}
public Waypoint(String provider) {
super(provider);
}
/* Implementing serializable */
private void writeObject(java.io.ObjectOutputStream out) throws IOException {
Log.v("DroidFA", "Serialising \"%s\" (v%d).", Waypoint.class.getSimpleName(), CLASS_VERSION);
out.writeInt(CLASS_VERSION);
out.writeObject(type);
out.writeObject(country);
out.writeObject(name);
out.writeObject(description);
out.writeInt(elevation);
out.writeInt(population);
}
private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {
int serialClassVersion = in.readInt();
Log.v("DroidFA", "Deserialising \"%s\" (v%d).", Waypoint.class.getSimpleName(),serialClassVersion);
type = (String) in.readObject();
country = (String) in.readObject();
name = (String) in.readObject();
description = (String) in.readObject();
elevation = in.readInt();
population = in.readInt();
}
}
serialización funciona bien.
Deseriamization produce la excepción followwing (el objeto de la pierna contiene un waypoint) .:
10-05 13:50:35.259: WARN/System.err(7867): java.io.InvalidClassException: android.location.Location; IllegalAccessException
10-05 13:50:35.267: WARN/System.err(7867): at java.io.ObjectInputStream.resolveConstructorClass(ObjectInputStream.java:2010)
10-05 13:50:35.267: WARN/System.err(7867): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2095)
10-05 13:50:35.267: WARN/System.err(7867): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:929)
10-05 13:50:35.267: WARN/System.err(7867): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2285)
10-05 13:50:35.278: WARN/System.err(7867): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2240)
10-05 13:50:35.278: WARN/System.err(7867): at com.droidfa.navigation.Leg.readObject(Leg.java:262)
.../...
Parece que ese problema está en otro lado. com.droidfa.navigation.Leg.readObject (Leg.java:262) –
La línea de la pierna 262 es: "from = (Waypoint) in.readObject();" que es donde realmente se encuentra el problema;). – jmc34