2012-02-05 19 views
0

好吧,讓我的第一個應用程序,我得到了一個XML解析器的工作。在同一個類中它工作正常,但如果我把它分離到一個新的類/ java文件,它不工作,編譯好,但不會在AVD中加載。可能有人請看看我的班,生病包括IM進口等,以及因爲我認爲它是與命名空間...任何幫助非常讚賞讓類在java中工作,構建一個Android應用程序來解析XML

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

    } 

} 

和主類做的工作在我包是,

package com.helloworld; 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.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(); 
     } 
} 
+0

我解決了這個問題,我的代碼在http://www.anddev.org/post113084.html#p113084 – JS60 2012-02-05 06:16:29

回答

1

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

在Android中,活動是爲您的應用程序顯示的組件。你不能直接實例化一個Activity,因爲它依賴於一堆OS代碼的正確創建和維護。這裏有很多錯誤,但是在很高的層次上,你真的不希望解析XML的功能擴展Activity。使用一個名爲getEventsFromAnXML並將Activity作爲參數的方法似乎沒有任何意義。

+0

我解決了這個http://www.anddev.org/post113084.html#p113084 – JS60 2012-02-05 06:14:02

相關問題