基本上我想从另一个类调用一个方法。我希望在MainActivity.java
中调用DownloadXML.java
中的data()
方法
这是一个安卓应用程序
所以这里是主要活动.java
public class MainActivity extends ListActivity {
String item;
DownloadXML a = new DownloadXML();
a.data();
// SYNTAX ERROR ON TOKEN "DATA" IDENTIFIER EXPECTED AFTER THIS TOKEN
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try{
item = getItemFromXML(this);
}catch (XmlPullParserException e){
}catch (IOException e){
}
String[] items = item.split("n");
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
}
public String getItemFromXML(Activity activity) throws XmlPullParserException, IOException{
StringBuffer stringBuffer = new StringBuffer();
Resources res = activity.getResources();
XmlResourceParser xpp = res.getXml(R.xml.items);
xpp.next();
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT){
if (eventType == XmlPullParser.START_TAG){
if (xpp.getName().equals("Item")){
stringBuffer.append(xpp.getAttributeValue(null, "Event") + "n");
}
if (xpp.getName().equals("ab")){
stringBuffer.append(xpp.getAttributeValue(null, "when") + "n");
}
if (xpp.getName().equals("cd")){
stringBuffer.append(xpp.getAttributeValue(null, "where") + "n" + "----------------------------------------------" + "n");
}
}
eventType = xpp.next();
}
return stringBuffer.toString();
}
}
这是下载XML
.javaimport java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.URL;
public class DownloadXML {
DownloadXML(){
}
public void data() throws Exception{
URL url = new URL("http://localhost:8080/lab/lab.xml");
BufferedReader reader = new BufferedReader
(new InputStreamReader(url.openStream()));
BufferedWriter writer = new BufferedWriter
(new FileWriter("C:\Users\eyas\workspace\CebuHQ\res\xml\items.xml"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
writer.write(line);
writer.newLine();
}
reader.close();
writer.close();
}
}
当我尝试实例化它并调用该方法时,它的错误为:
DownloadXML a = new DownloadXML();
a.data(); SYNTAX ERROR ON TOKEN "DATA" IDENTIFIER EXPECTED AFTER THIS TOKEN
你们能帮我这个吗?谢谢
唯一可以超出方法的代码是变量声明和初始化。如果要调用方法,则必须在方法或构造函数中执行此操作。
public class MainActivity extends ListActivity {
String item;
DownloadXML a = new DownloadXML();
a.data(); //This won't work. Put it inside a method
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
}
请尝试这样的事情:
public class MainActivity extends ListActivity {
String item;
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
DownloadXML a = new DownloadXML();
a.data();
}
}
试试这个:
public class DownloadXML {
public static void data(){
// Do whatever you want
}
}
并像这样称呼它:
DownloadXML.data();
为了调用另一个包的类,你需要相对地编码到每个包的意图中。此线程描述了如何完成此操作的总体任务。本质上,一个包必须愿意接受另一个包为其标记的任何内容。您还应该查找进程间通信。这是因为Android使用了Java的"沙盒"概念。我希望我正确理解了你的问题...