Я пытаюсь сериализовать свой класс HashMap и отправить его в другое намерение.
К сожалению, я получаю "androidruntime-error-parcel-неспособно к маршалу-значению«исключение .Как мне реализовать сериализуемый в этом классе?
TeamsHashMap.java:
package android.test;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class TeamsHashMap implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
private HashMap<String,Team> teamsHashMap;
public TeamsHashMap()
{
teamsHashMap = new HashMap<String,Team>();
}
public Team GetTeam(String teamName)
{
Team team = null;
Iterator<Entry<String, Team>> iterator = teamsHashMap.entrySet().iterator();
while(team == null && iterator.hasNext())
{
Map.Entry<String,Team> pair = (Map.Entry<String,Team>)iterator.next();
String currentKeyTeamName = pair.getKey();
team = teamName.contains(currentKeyTeamName) ? (Team)pair.getValue() : null;
}
return team;
}
public void AddTeam(String teamName,Team team)
{
teamsHashMap.put(teamName, team);
}
}
Ввод значения в намерение:
byte[] teamsHashMapSerialized = SerializerClass.serializeObject(teamsHashMap);
notificationIntent.putExtra("teamsHashMap", teamsHashMapSerialized);
SerializerClass.java:
package android.infra;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
public class SerializerClass {
public static byte[] serializeObject(Object o) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(o);
out.close();
// Get the bytes of the serialized object
byte[] buf = bos.toByteArray();
return buf;
} catch(IOException ioe) {
return null;
}
}
public static Object deserializeObject(byte[] b) {
try {
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(b));
Object object = in.readObject();
in.close();
return object;
} catch(ClassNotFoundException cnfe) {
return null;
} catch(IOException ioe) {
return null;
}
}
}