ich bin neu in Android-Entwicklung und ich versuche, meine erste App zu erstellen, die für eine online generierte XML-Datei sucht, um Informationen anzuzeigen. In der ersten Aktivität habe ich eine ListView mit allen Einträgen aus einer XML-Datei erstellt, sobald ich auf einen Eintrag klicke, übergibt er die ID und geht zur zweiten Aktivität, die auf eine andere XML-Datei mit den Details zugreifen soll. Ich erhalte diesen Fehler jedoch beim Versuch, die XML für die Details zu holen:Fehler beim Abrufen eines zweiten XML aus dem Internet
java.lang.ClassCastException: org.apache.harmony.xml.dom.ElementImpl
Irgendwelche Ideen, was ist falsch ? Hier ist die Quelle für die „Details“ Aktivität:
package en.android.itleaked.com;
import java.io.InputStream;
import java.net.URL;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.sax.Element;
import android.widget.ImageView;
import android.widget.TextView;
public class showReleases extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.releasedetails);
getFeed();
}
public void getFeed() {
Bundle extras = getIntent().getExtras();
try {
URL url2 = new URL("http://www.it-leaked.com/app/details.php?id=" + extras.getString("id"));
DocumentBuilderFactory dbf2 = DocumentBuilderFactory.newInstance();
DocumentBuilder db2 = dbf2.newDocumentBuilder();
Document doc2 = db2.parse(new InputSource(url2.openStream()));
doc2.getDocumentElement().normalize();
NodeList nodeList2 = doc2.getElementsByTagName("item");
String relTitle[] = new String[nodeList2.getLength()];
String relCover[] = new String[nodeList2.getLength()];
for (int i = 0; i < nodeList2.getLength(); i++) {
Node node2 = nodeList2.item(i);
Element fstElmnt2 = (Element) node2;
NodeList nameList2 = ((Document) fstElmnt2).getElementsByTagName("title");
Element nameElement2 = (Element) nameList2.item(0);
nameList2 = ((Node) nameElement2).getChildNodes();
relTitle[i] = ((Node) nameList2.item(0)).getNodeValue();
NodeList coverList2 = ((Document) fstElmnt2).getElementsByTagName("cover");
Element coverElement2 = (Element) coverList2.item(0);
coverList2 = ((Node) coverElement2).getChildNodes();
relCover[i] = ((Node) coverList2.item(0)).getNodeValue();
}
TextView txtView = (TextView)findViewById(R.id.TextView01);
txtView.setText(relTitle[0]);
ImageView imgView =(ImageView)findViewById(R.id.ImageView01);
Drawable drawable = LoadImageFromWebOperations(relCover[0]);
imgView.setImageDrawable(drawable);
}
catch (Exception e) {
TextView txtView2 = (TextView)findViewById(R.id.TextView02);
txtView2.setText("Error: " + e);
}
}
private Drawable LoadImageFromWebOperations(String url)
{
try
{
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
}catch (Exception e) {
System.out.println("Exc="+e);
return null;
}
}
}
Hier wird die URL für die XML mit einer angehängten ID, damit Sie sehen, wie es aussieht: http://www.it-leaked.com/app/details.php?id=50969
Irgendwelche Ideen, was los ist? Übrigens habe ich jeder Variable die Nummer 2 hinzugefügt, die etwas mit dem XML-Parsing/-Fetching zu tun hat, nur um sicherzustellen, dass es keinen Konflikt mit der anderen Aktivität gibt, aber ich bekomme immernoch denselben Fehler .. Ich hoffe du kannst mir helfen aus. Vielen Dank im Voraus
Faustregel: Geben Sie uns immer die nützlichsten Informationen über Ihren Fehler. In Ihrem Fall haben Sie uns Ihre Fehlerstack-Ablaufverfolgung nicht angezeigt. Denkst du nicht, dass es für uns leichter ist zu sehen, wo der Fehler aufgetreten ist und in welchen Zeilen, anstatt zu erwarten, dass wir deinen Code kopieren und einfügen, kompilieren und ausführen? – darioo
hey, zuerst einmal vielen Dank für die Antwort. Ich bin nicht ganz sicher, was Sie mit Stack-Trace meinen. Ich habe versucht, auf Debug zu klicken, aber die Eclipse-Konsole gibt mir keine Fehlermeldung, ich habe die Fehlermeldung durch catch (Ausnahme e) .. danke im Voraus – robs