2013-07-12 2 views
0

J'essaie d'ajouter un tableau personnalisé aux préférences partagées dans Android.Ajouter un tableau personnalisé aux préférences partagées dans android

J'ai un arrayList personnalisé qui contient des données du jeu (cordes et NodeList), les données sont stockées dans un tableau avec le nom suivant ArrayList<XMLDataArrayStructure> menuItems = new ArrayList<XMLDataArrayStructure>(); J'ai trouvé une solution qui me dit que je devrais utiliser une classe « ObjectSerializer » à stocker les données. Tout fonctionne bien jusqu'à un certain point, je reçois l'erreur suivante

W/System.err(32052): java.io.NotSerializableException: package.XMLDataArrayStructure 
W/System.err(32052): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364) 
W/System.err(32052): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) 
W/System.err(32052): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) 
W/System.err(32052): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481) 
W/System.err(32052): at java.util.ArrayList.writeObject(ArrayList.java:644) 
W/System.err(32052): at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err(32052): at java.lang.reflect.Method.invoke(Method.java:511) 
W/System.err(32052): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1053) 
W/System.err(32052): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404) 
W/System.err(32052): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) 
W/System.err(32052): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) 
W/System.err(32052): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481) 
W/System.err(32052): at package.ObjectSerializer.serialize(ObjectSerializer.java:17) 
W/System.err(32052): at package.GatherXMLData.getData(GatherXMLData.java:94) 
W/System.err(32052): at package.Splash$gatherData.doInBackground(Splash.java:63) 
W/System.err(32052): at package.Splash$gatherData.doInBackground(Splash.java:1) 
W/System.err(32052): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
W/System.err(32052): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
W/System.err(32052): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
W/System.err(32052): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
W/System.err(32052): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
W/System.err(32052): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
W/System.err(32052): at java.lang.Thread.run(Thread.java:864) 

Il échoue sur la personne

public static String serialize(Serializable obj) throws IOException { 
    if (obj == null) 
     return ""; 
    ByteArrayOutputStream serialObj = new ByteArrayOutputStream(); 
    ObjectOutputStream objStream = new ObjectOutputStream(serialObj); 
    objStream.writeObject(obj); 
    objStream.close(); 
    return encodeBytes(serialObj.toByteArray()); 
} 

suivant peut-il aider s'il vous plaît, cela m'a vraiment aider beaucoup que je n'aurais pour faire un appel réseau alors.

Merci

EDIT

Voici le code de la classe XMLDataArrayStructure, il n'implémente sérialisable mais je reçois l'erreur suivante encore

CODE

public class XMLDataArrayStructure implements Serializable{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    String title, date, start_time, end_time, venue, image, sponsor_logo; 
    NodeList people; 
    Spanned description; 

    public void setPeople(NodeList people) { 
     this.people = people; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public void setDate(String date) { 
     this.date = date; 
    } 

    public void setStartTime(String start_time) { 
     this.start_time = start_time; 
    } 

    public void setEndTime(String end_time) { 
     this.end_time = end_time; 
    } 

    public void setVenue(String venue) { 
     this.venue = venue; 
    } 

    public void setDescription(Spanned spanned) { 
     this.description = spanned; 
    } 

    public void setImage(String image) { 
     this.image = image; 
    } 

    public void setSponsorLogo(String sponsor_logo) { 
     this.sponsor_logo = sponsor_logo; 
    } 

    public NodeList getPeople() { 
     return people; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public String getDate() { 
     return date; 
    } 

    public String getStartTime() { 
     return start_time; 
    } 

    public String getEndTime() { 
     return end_time; 
    } 

    public String getVenue() { 
     return venue; 
    } 

    public Spanned getDescription() { 
     return description; 
    } 

    public String getImage() { 
     return image; 
    } 

    public String getSponsorLogo() { 
     return sponsor_logo; 
    } 

} 

ERREUR

W/System.err(1380): java.io.NotSerializableException: android.text.SpannableStringBuilder 
W/System.err(1380):  at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979) 
W/System.err(1380):  at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481) 
W/System.err(1380):  at java.util.ArrayList.writeObject(ArrayList.java:644) 
W/System.err(1380):  at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err(1380):  at java.lang.reflect.Method.invoke(Method.java:511) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1053) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) 
W/System.err(1380):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481) 
W/System.err(1380):  at package.ObjectSerializer.serialize(ObjectSerializer.java:17) 
W/System.err(1380):  at package.GatherXMLData.getData(GatherXMLData.java:89) 
W/System.err(1380):  at package.Splash$gatherData.doInBackground(Splash.java:63) 
W/System.err(1380):  at package.Splash$gatherData.doInBackground(Splash.java:1) 
W/System.err(1380):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
W/System.err(1380):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
W/System.err(1380):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
W/System.err(1380):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
W/System.err(1380):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
W/System.err(1380):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
W/System.err(1380):  at java.lang.Thread.run(Thread.java:864) 

Répondre

0

Selon toute vraisemblance, votre classe XMLDataArrayStructure est non Serializable. Il peut y avoir deux raisons:

  1. Votre classe elle-même ne met pas Serializable.

  2. Même si la classe implémente l'interface Serializable contient des déclarations qui fait référence à un objet non Serializable.

Veuillez poster le code de la classe au cas où vous le pouvez.

+0

Juste fait une modification à la question –

+0

Qu'est-ce que 'NodeList' et' Spanned'? Sont-ils sérialisables? – NINCOMPOOP

+0

NodeList contient un ensemble de données de données XML et Spanned est un ensemble de données html. Comment saurais-je s'ils sont sérialisables? –

1
Class XMLDataArrayStructure implements Serializable 
+0

Avez-vous la documentation pour cette classe? Je croyais que c'est une classe personnalisée utilisée par le PO. – NINCOMPOOP

Questions connexes