Wieso vermuten? Nutz doch Breakpoints, Logging oder Ähnliches und schau direkt nach, was passiert.
Parameter eines Online XML's abfragen
-
-
Hallo Lucas,
also ich habe es gerade mit einem timer versucht (nach 5 sekunden sollte nach dem inhalt geparst werden), hat irgendwie auch nicht gefunzt. hmm... mit dem breakpoints kenne ich mich nicht so aus, habe gerade gegoogelt und heruasgefunden wie man diese setzt etc. hat aber auch nichts gebracht. das ist ja echt blöd. der code stimmt ja eigentlich, die url auch. totz allem kommt null raus. das ist ja zum mäuse melken
-
Das wird dir nix bringen, die UrlConnection öffnet sich, holt die Daten und schließt sich wieder. Unabhängig von der Dauer des Vorgangs.
Erst dann beginnt das Parsen.Du musst nach dem Setzen der Breakpoints auch den Debugger anhängen. Wie das in Eclipse geht weiß ich nicht, aber in IntelliJ gibt es einen netten grünen Käfer neben dem Run-Symbol. Dann werden die Breakpoints auch angesprungen.
Ich stecke gerade voll im Stress und habe deshalb auch keine Zeit, dir da noch einmal so ausschweifend zu helfen.
Aber du musst das ja auch irgendwann mal selbst können. -
hehe... ja kein stress. mir wurde gut geholfen hier. ich gib auch mein bestes. danke
melde mich dann wenn mein latain wirklich am ende ist.
-
ok, fehler lag beim handler. da habe ich mit == einen stringvergleich gemacht. das durch .equals ersetzt und es funzt
-
ok, fehler lag beim handler. da habe ich mit == einen stringvergleich gemacht. das durch .equals ersetzt und es funzt
Soviel zum Thema:ne hab nix geändert beim handler sowie bei xmlDataCollected.
Freut mich, dass es jetzt läuft.
-
kann mir noch einmal einer erklären, wie man die daten, welche man mit einem Thread abfragt, an die Mainactivity übergibt? ich würde es gerne an einer Textview übergeben aber bekomme es einfach nicht hin.
Code
Alles anzeigen..... try { website = new URL(URL2); SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); XMLHandler xmlHandler = new XMLHandler(); xr.setContentHandler(xmlHandler); xr.parse(new InputSource(website.openStream())); String information = xmlHandler.getInformation(); setInformation(information); } catch (Exception e) { Log.e("ReadXML", "Error"); } } private void setInformation(String information) { if (information.equals("residential")) { information = "Stadt"; } MainActivity.umfeld.setText(information); }
So bekomme ich "Error" in der log
-
Das musst du dann alles über einen Handler erledigen. Du kanst nicht einfach aus dem Thred heraus deine Methode setInformation(information); aufrufen. Eine Alternative wäre hier ein AsyncTask gewesen
Schau dir einfach mal die Dokumentation zum Handler an. handler.post() bzw. handler.sendMessage(msg) könnte hilfreich sein.
Doku Handler:
-
hallo drumliner,
danke für deine promte antwort. Ich habe einen XMLHandler, die habe ich folgendermaßen angepasst habe:
Code
Alles anzeigenpublic class XMLHandler extends DefaultHandler { XMLDataCollected data = new XMLDataCollected(); @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if(localName.equals("tag")) { String k = attributes.getValue("k"); if (k.equals("landuse")) { String landuse = attributes.getValue("v"); data.setLanduse(landuse); } } } public String getInformation() { String information = ""; if (data.getData().equals("residential")) { information = "Stadt"; } return information; } }
habe dann in die MainActivity folgendes eingegeben: umfeld.setText(xmlHandler.getInformation());
bekomme diesmal eine NullPointerException. Ist das überhaupt richtig wie ich das gemacht habe? oder muß man doch anders vorgehen?
-
Kleiner Denkansatz:
PS: das mit "uiThreadHandler"-benennung habe ich mir vermerkt. danke
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!