Ich versuche, ein Auto-Update-Programm für mein ROM zu erstellen. Also, ich arbeite an das Lesen von XML-Werten von einer URL, aber wenn ich es ausführen, zeigt die Aktivität nichts. Da ich ziemlich neu in Android-Codierung bin, beschreiben Sie bitte deutlich.Android Keine Elemente mit
Code:
package com.defyworks.defyupdater;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;
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 java.net.URL;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
public class XMLParse extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/** Create a new layout to display the view */
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.HORIZONTAL);
/** Create a new textview array to display the results */
TextView UpdateName[];
TextView Version[];
TextView download[];
try {
URL url = new URL("https://www.defyworks.com/DefyROM/update.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getElementsByTagName("item");
/** Assign textview array lenght by arraylist size */
UpdateName = new TextView[nodeList.getLength()];
Version = new TextView[nodeList.getLength()];
download = new TextView[nodeList.getLength()];
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
UpdateName[i] = new TextView(this);
Version[i] = new TextView(this);
download[i] = new TextView(this);
Element fstElmnt = (Element) node;
NodeList nameList = fstElmnt.getElementsByTagName("UpdateName");
Element nameElement = (Element) nameList.item(0);
nameList = nameElement.getChildNodes();
UpdateName[i].setText("Update Name : " + ((Node) nameList.item(0)).getNodeValue());
NodeList websiteList = fstElmnt.getElementsByTagName("Version");
Element websiteElement = (Element) websiteList.item(0);
websiteList = websiteElement.getChildNodes();
Version[i].setText("Version : " + ((Node) websiteList.item(0)).getNodeValue());
download[i].setText("URL : " + websiteElement.getAttribute("download"));
layout.addView(UpdateName[i]);
layout.addView(Version[i]);
layout.addView(download[i]);
}
} catch (Exception e) {
System.out.println("XML Pasing Excpetion : " + e);
}
/** Set the layout view to display */
setContentView(layout);
}
}
Also .. änderte ich die xml. Auch habe ich den letzten Schritt nicht ganz verstanden .. –
Ich meine, um den Download-Link zu zeigen, sollten Sie den Code verwenden, den ich gepostet habe, anstatt Ihren eigenen Code. Was Sie tun sollten, um dies lokal zu testen, z. Ohne AsyncTask, ist es notwendig, das XML in den Ordner "Assets" zu bringen und statt "url.openStream()' '' getAssets(). open ("input.xml") '. Wenn Sie sicher sind, dass die Benutzeroberfläche ordnungsgemäß funktioniert, beheben Sie den Netzwerkcode – igorepst