TextView in XML Datei speichern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • TextView in XML Datei speichern

    Hallo Leute.
    Ich wollte jez ma damit anfangen, dass meine App sich auch abspeichert nach dem beenden, zumindest einzelne Teile wie eine TextView.
    Nur funktioniert das noch nicht so ganz, ich bitte um Lösungsvorschläge, am besten mit Code.
    Im Grundsatz will ich die TextView beim beenden abspeichern und beim start wieder laden lassen.
    Ich habe auch die Berechtigungen zum lesen/schreiben in der AndroidManifest gegeben.

    XmlParser.java


    Java-Quellcode

    1. package peppermine_studios.criminallife;
    2. import org.xmlpull.v1.XmlPullParser;
    3. import org.xmlpull.v1.XmlPullParserException;
    4. import org.xmlpull.v1.XmlPullParserFactory;
    5. import java.io.File;
    6. import java.io.FileNotFoundException;
    7. import java.io.FileReader;
    8. import java.io.FileWriter;
    9. import java.io.IOException;
    10. import java.util.ArrayList;
    11. import java.util.List;
    12. import java.util.logging.Level;
    13. import java.util.logging.Logger;
    14. public class XmlParser {
    15. XmlPullParserFactory factory;
    16. XmlPullParser parser;
    17. FileWriter writer;
    18. public XmlParser() {
    19. try {
    20. factory = XmlPullParserFactory.newInstance();
    21. factory.setNamespaceAware(true);
    22. parser = factory.newPullParser();
    23. } catch (XmlPullParserException ex) {
    24. Logger.getLogger(XmlParser.class.getName()).log(Level.SEVERE, null, ex);
    25. }
    26. }
    27. public void write(List<TaskOne> allTasks, File fileOne) throws IOException {
    28. writer = new FileWriter(fileOne);
    29. writer.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
    30. TaskOne taskTmpOne;
    31. for (int i = 0; i < allTasks.size(); i++) {
    32. taskTmpOne = allTasks.get(i);
    33. String content = taskTmpOne.getTaskContent();
    34. boolean isDone = taskTmpOne.isDone();
    35. writer.write("<Task content=\"" + content + "\"" + " isdone=\"" + isDone + "\"" + ">");
    36. writer.write("</TaskOne>");
    37. }
    38. writer.flush();
    39. }
    40. public List<TaskOne> read(File fileOne) throws XmlPullParserException, FileNotFoundException, IOException {
    41. parser.setInput(new FileReader(fileOne));
    42. List<TaskOne> list = new ArrayList<TaskOne>();
    43. TaskOne taskTmpOne;
    44. String content;
    45. boolean isDone;
    46. while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {
    47. if (parser.getEventType() == XmlPullParser.START_TAG) {
    48. content = parser.getAttributeValue(0);
    49. isDone = Boolean.parseBoolean(parser.getAttributeValue(1));
    50. taskTmpOne = new TaskOne(content, isDone);
    51. list.add(taskTmpOne);
    52. }
    53. parser.next();
    54. }
    55. return list;
    56. }
    57. }
    Alles anzeigen

    TaskOne.java

    Java-Quellcode

    1. package peppermine_studios.criminallife;
    2. public class TaskOne {
    3. String taskContent;
    4. boolean isDone;
    5. public TaskOne(String taskContent, boolean isDone){
    6. this.taskContent = taskContent;
    7. this.isDone = isDone;
    8. }
    9. public String getTaskContent() {
    10. return taskContent;
    11. }
    12. public boolean isDone() {
    13. return isDone;
    14. }
    15. public void setTaskContent(String taskContent) {
    16. this.taskContent = taskContent;
    17. }
    18. public void setIsDone(boolean isDone) {
    19. this.isDone = isDone;
    20. }
    21. }
    Alles anzeigen
    Mainactivity.java (onCreate)

    Java-Quellcode

    1. tasks = new ArrayList<TaskOne>();
    2. fileOne = new File(Environment.getExternalStorageDirectory(), "tasks.xml");
    3. parserOne = new XmlParser();
    4. if (fileOne.exists()) {
    5. try {
    6. tasks = parserOne.read(fileOne);
    7. if (tasks.isEmpty()) {
    8. fileOne.delete();
    9. fileOne.createNewFile();
    10. }
    11. } catch (XmlPullParserException ex) {
    12. Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
    13. } catch (FileNotFoundException ex) {
    14. Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
    15. } catch (IOException ex) {
    16. Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
    17. }
    18. } else {
    19. try {
    20. fileOne.createNewFile();
    21. } catch (IOException ex) {
    22. Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
    23. }
    24. }
    Alles anzeigen
    Mainactivity.java (onPause)


    Java-Quellcode

    1. try {
    2. parserOne.write(tasks, fileOne);
    3. } catch (IOException ex) {
    4. Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
    5. }
    Fehlermeldungen gibt es keine oder so. Es funktioniert so wie halt der Code ist, nicht.
  • Kiodok schrieb:

    am besten mit Code.
    Ich denke nicht.

    Du solltest einmal Breakpoints setzen und durchgehen, wie weit Deine Implementierung kommt.
    Der Grundsatz onPause() speichern und onResume() laden klingt erst einmal ganz einleuchtend.
    Wo der Fehler liegt kann mit diesen Informationen aber nur von Dir selbst herausgefunden werden.
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.

    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«