Android studio continue de lancer le journal des erreursNotSerializableException jeté pour la classe contenant des éléments de données primitives
12-29 16:13:39.092 9311-9311/com.cg.watbalance W/System.err: Caused by: java.io.NotSerializableException: com.cg.watbalance.balancescreen$WatCardData
12-29 16:13:39.092 9311-9311/com.cg.watbalance W/System.err: at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1344)
12-29 16:13:39.092 9311-9311/com.cg.watbalance W/System.err: at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
12-29 16:13:39.092 9311-9311/com.cg.watbalance W/System.err: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
12-29 16:13:39.092 9311-9311/com.cg.watbalance W/System.err: at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)`
suivant la classe WatCardData est comme suit
public static class WatCardData implements java.io.Serializable{
private String FirstName;
private Double MP, FD, Other, Total;
private Date Date;
public WatCardData(Document myDoc) {
Elements myTDTags = myDoc.getElementsByTag("TD");
Element myNameTag = myDoc.getElementById("oneweb_account_name");
String TempFirstName = myNameTag.text().split(",")[1];
if (TempFirstName == null || TempFirstName.length() == 0) {
FirstName = TempFirstName;
}
else {
FirstName = WordUtils.capitalizeFully(TempFirstName.substring(0, TempFirstName.length()-1));
}
MP = Double.valueOf(myTDTags.get(7).text()) + Double.valueOf(myTDTags.get(14).text()) + Double.valueOf(myTDTags.get(21).text()) + Double.valueOf(myTDTags.get(49).text());
FD = Double.valueOf(myTDTags.get(42).text()) + Double.valueOf(myTDTags.get(35).text()) + Double.valueOf(myTDTags.get(28).text());
Other = Double.valueOf(myTDTags.get(56).text()) + Double.valueOf(myTDTags.get(63).text()) + Double.valueOf(myTDTags.get(70).text()) + Double.valueOf(myTDTags.get(77).text()) + Double.valueOf(myTDTags.get(84).text());
Total = Double.valueOf(myTDTags.get(91).text().substring(2));
Date = new Date();
}
private String getMPString() {
return "$" + MP;
}
private String getFDString() {
return "$" + FD;
}
private String getOtherString() {
return "$" + Other;
}
private String getFirstName(){
return FirstName+"'s WatCard";
}
private String getTotalString() {
return "$" + Total;
}
private String getDateString() {
String txt = DateUtils.getRelativeTimeSpanString(Date.getTime()).toString();
if (txt.equals("0 minutes ago")) {
return "Now";
} else {
return txt;
}
}
}
Mon objet écrire du code est la suivante
try {
FileOutputStream fos = balancescreen.this.openFileOutput("lastBalance", Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(myData);
Log.d("DATA","WRITTEN");
os.close();
fos.close();
} catch(Exception e) {
e.printStackTrace();
}
Pourquoi ne puis-je pas écrire l'objet myData dans un fichier? J'ai essayé de rendre toutes les variables transitoires, mais ça ne marche pas non plus!
Est-ce que balancescreen est aussi une classe? Et peut-être * pas * déclaré sérialisable? – Jan
Montrez-nous le code de l'écran d'équilibre. –