java - 让类在 java 中工作,构建 Android 应用程序来解析 XML

标签 java android class

好吧,我的第一个应用程序,我有一个 XML 解析器正在运行。在同一个类中它工作正常,但如果我将它分离到一个新的类/java文件中,它不起作用,编译正常但不会加载到 AVD 中。有人可以看看我的类(class)吗,我也包括即时导入等,因为我认为它与命名空间有关......非常感谢任何帮助

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,这对我来说看起来很奇怪。

也许不应该,你应该传入你的 HelloworldActiviy:

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();
    }
}

关于java - 让类在 java 中工作,构建 Android 应用程序来解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9147073/

相关文章:

java - servlet 上下文中的 WebSphere 管理角色检查

c++ - 二叉搜索树分割错误

java - 如何编写一个 SQL 以便它可以在任何数据库上运行

java - Android:使用 Retrofit 和 Jackson 反序列化动态 JSON

android - 动态设置语言字符串源

android - 如何使用 Scheduler 进行 Http 请求

Android 触摸屏位置关闭

java - 方法map=null和map.clear()是否相同?

c++ - 声明与 “Message::save(<error-type>& fol)” 不兼容

java - 如何在设备 sleep 时保持 ChromeCast session 处于 Activity 状态?