- Forum-Beiträge: 227
30.12.2014, 19:18:00 via Website
30.12.2014 19:18:00 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:45:23
30.12.2014, 19:18:00 via Website
30.12.2014 19:18:00 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:45:23
30.12.2014, 20:02:57 via Website
30.12.2014 20:02:57 via Website
Hallo Kurt,
deine nodelist ist leer daher kommt der Fehler
@Override
protected void onPostExecute(Void args) { //Methode zum eig. Parsen und Ausgeben auf Screen bzw. Schreiben in Stringarray
for (int temp=0; temp<nodelist.getLength(); temp++) {
Node nNode = nodelist.item(temp);
mach Bitte nen try/catch drum um das zu prüfen und du solltest ein Resultat sehen.
Gruß Ludy (App Entwickler)
✴
Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺
✴
☕ Buy Me A Coffee ☕
✴
Lebensmittelwarnung-App
✴
✨Meine Wunschliste✨
✴
📲Telegram NextPit News📲
30.12.2014, 20:03:04 via App
30.12.2014 20:03:04 via App
In Zeile 181 befindet sich der Fehler.
Was stehtn da ?
LG,
Stefan
— geändert am 30.12.2014, 20:04:19
30.12.2014, 20:17:42 via Website
30.12.2014 20:17:42 via Website
Danke Ludy, werde ich gleich mal probieren.
@Stefan:
protected void onPostExecute(Void args) {
Zeile 181 --> for (int temp=0; temp
Node nNode = nodelist.item(temp);
01.01.2015, 21:12:16 via Website
01.01.2015 21:12:16 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:45:29
01.01.2015, 21:18:35 via Website
01.01.2015 21:18:35 via Website
Genau, aber ich würde direkt die "NullPointerException" nehmen, falls noch andere Errors kommen, da Du weist das es die NullPointer ist.
Ein Fehler fällt schneller auf, wenn die App abstürtzt
Gruß Ludy (App Entwickler)
✴
Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺
✴
☕ Buy Me A Coffee ☕
✴
Lebensmittelwarnung-App
✴
✨Meine Wunschliste✨
✴
📲Telegram NextPit News📲
02.01.2015, 12:00:24 via Website
02.01.2015 12:00:24 via Website
Gut mach ich.
Jetzt habe ich noch einen Error:
Error--> private static String getNode(String sTag, Element eElement) {
NodeList nList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
Node nValue = (Node) nList.item(0);
return nValue.getNodeValue();
}
Meldung: The method getNode cannot be declared static; static methods can only be declared in a static or top level type
02.01.2015, 12:04:04 via Website
02.01.2015 12:04:04 via Website
Poste mal bitte deinen aktuellen Code.
Warscheinlich hast du eine innerClass definiert und in dieser sind statische Methoden nicht zugelassen.
LG
LG Pascal //It's not a bug, it's a feature.
02.01.2015, 12:27:39 via Website
02.01.2015 12:27:39 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:45:36
02.01.2015, 12:35:42 via Website
02.01.2015 12:35:42 via Website
Entweder su lässt das static Attribut weg, denn wozu brauchst du es?
Oder du machst für deinen AsyncTask Downlader in eine eigene Datei, wobei ich das mit der Datei unabhängig vom Fehler machen würde denn es ist übersichtlicher wenn eigene Klassen auch in eigenen Dateien sind.
Also Klasse in eigene Date -> Fehler weg.
Gleichzeitig kannst du noch das static Attribut entfernen.
LG
LG Pascal //It's not a bug, it's a feature.
02.01.2015, 12:45:07 via Website
02.01.2015 12:45:07 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:45:42
02.01.2015, 12:52:53 via Website
02.01.2015 12:52:53 via Website
Du musst nur das "static" attribut löschen.
Und ja am besten eine eigene Date für den AsyncTask erstellen
LG Pascal //It's not a bug, it's a feature.
02.01.2015, 17:12:20 via Website
02.01.2015 17:12:20 via Website
Gut. Wie mach is das dann mit der Übergabe zwischen den beiden Dateien?
03.01.2015, 12:30:47 via App
03.01.2015 12:30:47 via App
Kurt
Gut. Wie mach is das dann mit der Übergabe zwischen den beiden Dateien?
Du musst dich nicht darum kümmern. Du kannst 10 Klassen in eine Datei tun oder auch in 10 einzelne. Das ist in deinem Fall egal.
Außerdem würde ich das static da lassen, weil dadurch klar wird, dass die Methode unabhängig von Klassenvariablen ist.
Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀
Why Java? - Because I can't C#
07.01.2015, 18:50:35 via Website
07.01.2015 18:50:35 via Website
Ja wenn ich das static lasse, dann habe ich einen Error.
Meldung: The method getNode cannot be declared static; static methods can only be declared in a static or top level type.
07.01.2015, 18:54:03 via Website
07.01.2015 18:54:03 via Website
Hast du deinen AsyncTask jetzt in eine eigene Datei ausgelagert?
Poste bitte nochmal deinen Code.
LG
LG Pascal //It's not a bug, it's a feature.
07.01.2015, 20:17:32 via Website
07.01.2015 20:17:32 via Website
Soll ich den kompletten Parser in ein eigene Activity geben? Wenn ja, wie bekomme ich dann die Werte vom Parser in andere Activities?
07.01.2015, 20:21:06 via App
07.01.2015 20:21:06 via App
Eine eigene Activity brauchst du auf keinen Fall!
Du erstellst eine neue Java Datei und kopiersr deinen AsyncTask ein. mehr musst du nicht ändern denn die Daten kommen trotzdem an, denn eine Klasse ist etwas anderes als eine Activity.
LG Pascal //It's not a bug, it's a feature.
08.01.2015, 15:01:45 via Website
08.01.2015 15:01:45 via Website
d.h. rechtsklick -> new class und dann den Teil ab:
private class DownloadXML extends AsyncTask
einfügen?
— geändert am 08.01.2015, 15:04:11
08.01.2015, 19:02:47 via App
08.01.2015 19:02:47 via App
Ja einfach in ne neue Datei.
LG Pascal //It's not a bug, it's a feature.
09.01.2015, 19:12:28 via Website
09.01.2015 19:12:28 via Website
Gut hab ich. Jetzt habe ich folgenden Error:
nodelist cannot be resolved
09.01.2015, 19:48:56 via Website
09.01.2015 19:48:56 via Website
Wieder das gleiche wie im anderen Thread
Einfach eine globale nodeList anlegen, da diese Variable beim Kopieren warscheinlich nicht mitkopiert wurde.
LG Pascal //It's not a bug, it's a feature.
10.01.2015, 20:34:50 via Website
10.01.2015 20:34:50 via Website
Wenn ich die Variable rüberkopiere kommt ein Error:
NodeList nodelist; //nodelist import expected
das import habe ich aber. Wenn ich es mit ctrl umschalt o versuche wird mir der nodelist import entfernt.
Wenn ich die Variable nicht rüberkopiere und einfach public NodeList nodelist; mache ändert sich auch nichts.
11.01.2015, 11:36:31 via Website
11.01.2015 11:36:31 via Website
Du brauchst en Import:
import org.w3c.dom.NodeList;
Und die Variable
NodeList nodelist;
Dann sollte es gegen, falls nien poste deinen Code (mit Imports)
LG Pascal //It's not a bug, it's a feature.
11.01.2015, 11:58:57 via Website
11.01.2015 11:58:57 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:45:54
11.01.2015, 12:01:19 via Website
11.01.2015 12:01:19 via Website
Du musst die Nodelist in der Klasse definieren, ausserhalb macht es keinen Sinn und funktioniert nicht:
import java.net.URL;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import android.os.AsyncTask;
import android.util.Log;
public class DownloadXML extends AsyncTask {
NodeList nodelist;
@Override
protected Void doInBackground(String... Url) {
try {
URL url = new URL(Url[0]);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
nodelist = doc.getElementsByTagName("park");
}
catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void args) {
try {
for (int temp=0; temp<nodelist.getLength(); temp++) {
Node nNode = nodelist.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
//Elemente
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
private static String getNode(String sTag, Element eElement) {
NodeList nList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
Node nValue = (Node) nList.item(0);
return nValue.getNodeValue();
}
}
LG Pascal //It's not a bug, it's a feature.
06.02.2015, 15:03:00 via Website
06.02.2015 15:03:00 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:46:00
06.02.2015, 15:43:25 via App
06.02.2015 15:43:25 via App
Lies dir den Text bitte mal durch. (Oder ist das zu viel verlangt?)
Ein kleines bisschen muss man Englisch können, um das zu verstehen. Das sollte aber kein Problem sein.
Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀
Why Java? - Because I can't C#
06.02.2015, 15:45:18 via App
06.02.2015 15:45:18 via App
Steht eh im Logfile ^^
Internet Permission fehlt im Manifest.
— geändert am 06.02.2015, 15:45:37
06.02.2015, 15:46:26 via App
06.02.2015 15:46:26 via App
Stefan W
Steht eh im Logfile ^^ [...]
Das meinte ich ja 😉
Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀
Why Java? - Because I can't C#
06.02.2015, 16:04:16 via Website
06.02.2015 16:04:16 via Website
Ja das hab ich aber schon im Manifest:
<uses-permission android:name="android.permission.INTERNET" />
— geändert am 06.02.2015, 16:04:47
06.02.2015, 16:17:59 via Website
06.02.2015 16:17:59 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:46:08
06.02.2015, 16:21:36 via App
06.02.2015 16:21:36 via App
Hallo,
OverviewActivity.java Zeile 53 ist der Fehler.
Poste doch bitte den Code dazu.
Gruß Ludy (App Entwickler)
✴
Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺
✴
☕ Buy Me A Coffee ☕
✴
Lebensmittelwarnung-App
✴
✨Meine Wunschliste✨
✴
📲Telegram NextPit News📲
06.02.2015, 16:34:56 via Website
06.02.2015 16:34:56 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:46:14
06.02.2015, 17:15:55 via App
06.02.2015 17:15:55 via App
ListViewAdapter - getCount passt ned.
06.02.2015, 17:20:33 via App
06.02.2015 17:20:33 via App
Gut gesehen Ludy 👍
@Kurt: Willst du das bei jedem Fehler jetzt so machen? :
Zum Fehler: Nachdem du setAdapter aufgerufen hast, wird das ListView gerendert. Dafür muss sie wissen, wieviele Items es gibt. Das fragt sie mit der getItemsCount(). Da dein Adapter anscheinend von ArrayAdapter erbt und im LogCat steht, dass die super Methode aufgerufen wurde und du sie nicht überschrieben hast, versucht der Adapter(glaube ich, ich hab mir den Source Code nicht angeguckt) anhand der im super Konstruktor gegebenen Parameter die Anzahl der Items herauszufinden. Da scheint etwas schief zu gehen.
Mach dir am besten einen BreakPoint in der Zeile im ArrayAdapter.
Ich vermute, dass die Liste oder das Array, die/das im super Konstruktor übergeben wurde, null ist.
Korrigier mich, wenn ich bei meinen Vermutungen falsch liege.
Edit: Stefan hats in Kurzform geschrieben 😁
— geändert am 06.02.2015, 17:22:12
Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀
Why Java? - Because I can't C#
07.02.2015, 16:21:26 via Website
07.02.2015 16:21:26 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:46:21
07.02.2015, 18:29:17 via Website
07.02.2015 18:29:17 via Website
Dein Code läuft unweigerlich auf eine NullPointerException hinaus:
OnTaskCompleted otc = new OnTaskCompleted() {
@Override
public void onTaskCompleted(ArrayList<WP> list) {
neue_liste = list; //<-- Hier setzst du zwar die Liste, da muss aber auch alles weitere nach dem download rein...
}
};
new DownloadXML(otc).execute(URL); //Aufruf des Parsers
//------- Ab hier muss alles in die onFinished, da ja erst auf den fertigen download gewartet werden muss
ListViewAdapter adapter = new ListViewAdapter(this, neue_liste);
setListAdapter(adapter);
this.getListView().setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(i);
}
}
});
LG Pascal //It's not a bug, it's a feature.
08.02.2015, 10:07:19 via Website
08.02.2015 10:07:19 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:46:37
08.02.2015, 10:23:00 via Website
08.02.2015 10:23:00 via Website
Dein Fehler ist wahresceinlich eine Folge dieses Falschen Codes:
super((Context) onTaskCompleted, R.layout.rowlayout_layout, list);
this.context = (Activity) onTaskCompleted;
Du musst weiterhin den Contest übergeben:
public ListViewAdapter(Context ctx, ArrayList list) {
super(ctx, R.layout.rowlayout_layout, list);
this.context = ctx;
this.list = list;
}
Und beim aufrufen dann:
ListViewAdapter adapter = new ListViewAdapter(FirstActivity.this, neue_liste); //Context der Activity übergeben
setListAdapter(adapter);
Das geht nbur so, da du in einem Listener in einer anonymen Klasse bist, da hat das schlüsselwort this eine andere Bedeutung.
LG Pascal //It's not a bug, it's a feature.
08.02.2015, 11:05:46 via Website
08.02.2015 11:05:46 via Website
Gut hab ich geändert.
Nur passt ihm jetzt context.getLayoutInflater() nicht da getLayoutInflater() für den Typ Context nicht definiert ist.
08.02.2015, 11:54:29 via Website
08.02.2015 11:54:29 via Website
Dann must du wieder auf die Activity var umsteigen, wenn das mit einem Context nicht geht.
LG Pascal //It's not a bug, it's a feature.
08.02.2015, 15:54:26 via Website
08.02.2015 15:54:26 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:46:46
08.02.2015, 15:57:16 via Website
08.02.2015 15:57:16 via Website
Irgend ein Fehler beim Parsen?
Was sagt der log, bzw. der debugger?
LG Pascal //It's not a bug, it's a feature.
08.02.2015, 16:23:50 via Website
08.02.2015 16:23:50 via Website
Passwort für diesen Account ist: test123
War einfach heruaszufinden ^^
— geändert am 23.02.2015, 19:35:08
08.02.2015, 16:27:31 via Website
08.02.2015 16:27:31 via Website
Es hast mit deinem Parser zutun.
Der sagt:
: java.lang.NumberFormatException: Invalid int: "4,62"
Was bedeutet das jetzt für dich?
LG Pascal //It's not a bug, it's a feature.
08.02.2015, 16:37:54 via Website
08.02.2015 16:37:54 via Website
D.h. der Wert ist 4,62 (float Wert) aber der Parser will ein Int.
— geändert am 08.02.2015, 16:38:20
08.02.2015, 16:40:03 via Website
08.02.2015 16:40:03 via Website
Ja das gibt es:
float f = Float.parseFloat("0.0065");
Du darfst dann aber auch nicht vergessen den Typ der variable in deiner WP Klasse zu ändern.
LG Pascal //It's not a bug, it's a feature.
08.02.2015, 16:54:32 via Website
08.02.2015 16:54:32 via Website
Danke! Dann kommt aber wieder die selbe Meldung:
02-08 16:52:43.406: W/System.err(21835): java.lang.NumberFormatException: Invalid float: "4,62"
08.02.2015, 17:01:16 via App
08.02.2015 17:01:16 via App
Wegen dem Komma, da gehört ein Punkt hin. Also 4.62 und nicht 4,62
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.