XML Nachricht bearbeiten - Zeitverzögerung?

  • 2 Antworten
  • Letztes Antwortdatum
Max1809

Max1809

Fortgeschrittenes Mitglied
6
Hallo zusammen,

ich habe ein kleines Problem.

Ich kann bei mir bestimmte Objekte als Favorit kennzeichnen. Dazu passe ich eine XML-Datei dementsprechend an.

Dazu ein kurzer Auszug aus der entsprechenden Methoden:

Code:
        try {
            DocumentBuilderFactory docFactory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
            Document doc = docBuilder.parse(xmlNachricht);

            // Root-Knoten holen
            Node nodes = doc.getElementsByTagName("Nachricht").item(0);
            
            // Kindknoten durchlaufen und richtiges Element suchen
            NodeList list = nodes.getChildNodes();

            for (int i = 0; i < list.getLength(); i++) {
                Node node = list.item(i);
            
                String temp = node.getNodeName();
                if ("Informationen_zur_Nachricht".equals(node.getNodeName())) {

                    NodeList kinder = node.getChildNodes();
                    for (int n = 0; n < kinder.getLength(); n++) {
                        if ("Favorit".equals(kinder.item(n).getNodeName())) {
                            kinder.item(n).setTextContent("J");
                            Log.d("XML", "Setze Favoriten-Kennzeichen.");
                            break;
                        }
                    }

                }
            }

            Transformer transformer = TransformerFactory.newInstance()
                    .newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");

            StreamResult result = new StreamResult(xmlNachricht);
            DOMSource source = new DOMSource(doc);
            transformer.transform(source, result);

        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
Das funktioniert grundsätzlich auch ganz gut. Nur denke ich, dass ich zeitlich hier ein Problem habe.

Diese Funktionalität wird durch einen Button aufgerufen. Wenn diese Methode durchgelaufen ist, wechsle ich in die entsprechende "Favoriten"-Maske und aktualisiere die ListView dort.

Leider kriegt die Maske die Änderung in der XML-Datei nicht mit :( Erst nach Neustart der App ist das entsprechende Objekt auch unter "Favoriten" zu finden.

EDIT: Es tut mir Leid!!!

Böser Fehler unterlaufen ... die XML-Nachricht wurde korrekt geschrieben. Kein Problem.

Das Problem war, dass ich in der Favoriten-Activity die Methode "onRestart" überschrieben habe -> in der Hoffnung, dass diese beim erneuten Aufruf gestartet wird.

War leider nicht so. Es ist die Methode "onResume".
 
Zuletzt bearbeitet:
Wenn der Teil soweit funktioniert wäre vermutlich die Frage wie die ListView die XML einliest.
Weil scheinbar schreibst du ja richtig raus.
Oder läuft das in nem anderen Thread ab und deine ListView wird aufgerufen bevor deine Methode durchgelaufen ist?
Dann würde ich evtl mit nem Callback arbeiten und solange eine Progressbar anzeigen.
Und erst wenn du wirklich durch die Methode durch bist die andere Acitivity aufrufen.
 
amfa schrieb:
Wenn der Teil soweit funktioniert wäre vermutlich die Frage wie die ListView die XML einliest.
Weil scheinbar schreibst du ja richtig raus.
Oder läuft das in nem anderen Thread ab und deine ListView wird aufgerufen bevor deine Methode durchgelaufen ist?
Dann würde ich evtl mit nem Callback arbeiten und solange eine Progressbar anzeigen.
Und erst wenn du wirklich durch die Methode durch bist die andere Acitivity aufrufen.

Siehe Oben:
EDIT: Es tut mir Leid!!!

Böser Fehler unterlaufen ... die XML-Nachricht wurde korrekt geschrieben. Kein Problem.

Das Problem war, dass ich in der Favoriten-Activity die Methode "onRestart" überschrieben habe -> in der Hoffnung, dass diese beim erneuten Aufruf gestartet wird.

War leider nicht so. Es ist die Methode "onResume".

Tur mir Leid. :(
 
Zurück
Oben Unten