我有下面的代碼,我從Android java教程中使用該代碼。將代碼從onCreate方法移出並放入其自己的類文件中
該代碼都在應用程序的主要java文件onCreate方法,我想將XML處理部分移動到一個單獨的類。
我嘗試了幾種不同的方法,但所有這些方法都失敗了,並且變得更加笨重,因此值得。
所以我的問題是,有沒有一種很好的/標準的方式將代碼從主要的java文件中移出來並轉換爲一個單獨的類?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
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);
String elType = "mt";
int counter = 1;
int mainTopics = 0;
int subTopics = 0;
xpp.next();
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT)
{
if(eventType == XmlPullParser.START_DOCUMENT)
{
stringBuffer.append("News Categories");
}
else if(eventType == XmlPullParser.START_TAG)
{
if(xpp.getName().equalsIgnoreCase("subTopic")) {
elType = "st";
subTopics += 1;
} else if(xpp.getName().equalsIgnoreCase("mainTopic")) {
elType = "mt";
mainTopics += 1;
} else {
elType = "";
}
//stringBuffer.append("\nSTART_TAG: "+xpp.getName());
}
else if(eventType == XmlPullParser.END_TAG)
{
//stringBuffer.append("\nEND_TAG: "+xpp.getName());
}
else if(eventType == XmlPullParser.TEXT)
{
if(elType.equalsIgnoreCase("st")) {
stringBuffer.append("\n *"+xpp.getText());
} else {
stringBuffer.append("\n " + counter + ") " + xpp.getText());
counter+= 1;
}
}
eventType = xpp.next();
}
//stringBuffer.append("\n--- End XML ---");
stringBuffer.append("\n Total Topics: " + mainTopics + " Total SubTopics: " + subTopics);
return stringBuffer.toString();
}
我得到這個工作:將其移動到名爲ReadXML的一次像這樣的類:
readXML processXml = new readXML();
try {
stringXmlContent = processXml.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();
}
}
我剛剛結束的方法「私有String getEventsFromAnXML」的新類
這樣:
public class readXML {
private String getEventsFromAnXML(Activity activity)
....process XML...
}
這不是很清楚,你是否試圖用'getEventsFromAnXML'方法將代碼移動到單獨的類中? – 2012-01-04 16:42:45
究竟是什麼意思?移出代碼?你能改述你的問題嗎? – akkilis 2012-01-04 16:46:34
對不起...我得到它的工作。我編輯了上面的原文。我的意思是,我想將方法「getEventsFromAnXML」移到它自己的類中。 – SkyeBoniwell 2012-01-04 16:51:16