让类在java中工作,构建Android应用程序来解析XML
好的,我的第一个应用程序,是一个XML解析器。在同一个类中,它工作得很好,但是如果我将它分离到一个新的class/java文件中,它不工作,编译得很好,但不会加载到AVD中。有人能看一下我的类吗?我会包括im导入等,因为我认为它与名称空间有关…非常感谢任何帮助让类在java中工作,构建Android应用程序来解析XML,java,android,class,Java,Android,Class,好的,我的第一个应用程序,是一个XML解析器。在同一个类中,它工作得很好,但是如果我将它分离到一个新的class/java文件中,它不工作,编译得很好,但不会加载到AVD中。有人能看一下我的类吗?我会包括im导入等,因为我认为它与名称空间有关…非常感谢任何帮助 package com.helloworld; import android.app.Activity; import java.io.IOException; import org.xmlpull.v1.XmlPullParser;
package com.helloworld;
import android.app.Activity;
import java.io.IOException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
//import android.app.Activity;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.widget.TextView;
// import com.helloworld.XMLParse;
//import android.widget.TextView;
public class HelloworldActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
XMLParse xml_parse = new XMLParse();
xml_parse.doXML();
}
}
在我的课程包里,主要的课程是
包com.helloworld;
导入java.io.IOException
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.app.Activity;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.widget.TextView;
public class XMLParse extends Activity {
public void doXML() {
TextView myXmlContent = (TextView)findViewById(R.id.my_xml);
String stringXmlContent;
try {
stringXmlContent = getEventsFromAnXML(this);
myXmlContent.setText(stringXmlContent);
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private String getEventsFromAnXML(Activity activity)
throws XmlPullParserException, IOException
{
StringBuffer stringBuffer = new StringBuffer();
Resources res = activity.getResources();
XmlResourceParser xpp = res.getXml(R.xml.myxml);
xpp.next();
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT)
{
if(eventType == XmlPullParser.START_DOCUMENT)
{
stringBuffer.append("--- Start XML ---");
}
else if(eventType == XmlPullParser.START_TAG)
{
stringBuffer.append("\nSTART_TAG: "+xpp.getName());
}
else if(eventType == XmlPullParser.END_TAG)
{
stringBuffer.append("\nEND_TAG: "+xpp.getName());
}
else if(eventType == XmlPullParser.TEXT)
{
stringBuffer.append("\nTEXT: "+xpp.getText());
}
eventType = xpp.next();
}
stringBuffer.append("\n--- End XML ---");
return stringBuffer.toString();
}
}
我对android一无所知,但我觉得奇怪的是,您的XMLParse是从Activity继承的 也许不应该,你应该通过你的HelloWorld活动:
public void doXML(Activity activity) {
TextView myXmlContent = (TextView)activity.findViewById(R.id.my_xml);
String stringXmlContent;
try {
stringXmlContent = getEventsFromAnXML(activity);
myXmlContent.setText(stringXmlContent);
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
在android中,活动是应用程序的可显示组件。您不能直接实例化活动,因为它需要正确地创建和维护一组操作系统代码。这里有很多错误,但在较高的层次上,您确实不希望解析XML的功能扩展活动。使用一个名为getEventsFromAnXML的方法来获取活动作为参数似乎没有意义。我解决了这个问题,代码在