私は以下のコードを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();
}
}
私はちょうどこのように新しいクラスに
の方法「プライベート文字列getEventsFromAnXMLを」ラップ:
public class readXML {
private String getEventsFromAnXML(Activity activity)
....process XML...
}
'getEventsFromAnXML'メソッドを使って別のクラスにコードを移動しようとしていますか? –
それはどういう意味ですか?コードをどこに移動しますか?あなたはあなたの質問を言い換えることができますか? – akkilis
申し訳ありません...私はそれが働くようになった。私は上記の元の投稿を編集しました。私が意味していたのは、メソッド "getEventsFromAnXML"を独自のクラスに移動することでした。 – SkyeBoniwell