如何从另一个类运行方法?java-android

如何从另一个类运行方法?java-android,java,android,eclipse,Java,Android,Eclipse,基本上我想从另一个类调用一个方法。我希望在MainActivity.java中调用DownloadXML.java中的data()方法 这是一个android应用程序 下面是MainActivity.java public class MainActivity extends ListActivity { String item; DownloadXML a = new DownloadXML(); a.data(); // SYNTAX ER

基本上我想从另一个类调用一个方法。我希望在
MainActivity.java
中调用
DownloadXML.java
中的
data()
方法

这是一个android应用程序

下面是MainActivity.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();

    }

}
当我尝试实例化它并调用该方法时,它有一个错误:

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 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();
试试这个:

 public class DownloadXML {

     public static void data(){
        // Do whatever you want
     }
 }
这样称呼它:

 DownloadXML.data();

为了调用另一个包的类,您需要相对地将代码编码到每个包中。描述如何完成的总体任务。本质上,一个包必须愿意接受其他包为其标记的任何内容。你也应该向上看。这是因为Android使用Java的“”概念。我希望我正确地理解了您的问题…

为了调用另一个包的类,您需要对每个包进行相对编码。描述如何完成的总体任务。本质上,一个包必须愿意接受其他包为其标记的任何内容。你也应该向上看。这是因为Android使用Java的“”概念。我希望我正确理解了您的问题…

首先,您需要尝试了解一下
a.data()
,因为它会引发异常;)将其移动到onCreate
a.data()
您不能仅从类内部调用方法,它必须位于该类的另一个方法中。在onCreate方法上尝试该方法会出现此错误未经处理的异常类型异常这就是您要寻找的:首先,您需要尝试并了解
a.data()
因为它引发异常;)将其移动到onCreate
a.data()
您不能仅从类内部调用方法,它必须位于该类的另一个方法中。在onCreate方法上尝试该方法时出现此错误未经处理的异常类型异常这就是您要查找的:您的方法引发异常。可能是因为Android设备上不存在文件路径。这是另一个问题,与您的第一个问题无关。您需要添加一个try-and-catch-around
a.data()
方法引发异常。可能是因为Android设备上不存在文件路径。这是另一个问题,与您的第一个问题无关。您需要添加一个try-and-catch-around
a.data()