如何调用方法

时间:2014-09-19 05:16:48

标签: java android class methods return

如何在不同的类中调用方法并在MainActivity中获取结果。

我正在API中调用Get方法。但我不确定如何将结果数据传递回mainActivity:

我的代码

CallAPI课程:

...
public void Get() {
        Log.i(TAG, "GET()");
        // GET method example
        new AsyncTask<Void, Void, String>() {

            protected String doInBackground(Void... parameters) {
                API api = new API(mApiKey, mApiSecret);

                List<NameValuePair> params = new ArrayList<NameValuePair>();       
                params.add(new BasicNameValuePair("api_key", mApiKey));                     

                return api.get("category", params);
            }

            protected void onPostExecute(String result) {  // *** >I NEED THIS result< ***
                Log.i(TAG + " - APIRESULT", "GET() => " + result);
            }

        }.execute();
    }//end Get
...

MainActivity类:

...
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main)

           mCallApi.Get();

...

所以在MainActivity中我可以运行该方法,但不知道如何在这里结果日期。

由于

2 个答案:

答案 0 :(得分:0)

使用界面。由于代码是异步的,因此无法使用返回值。

interface myCallBack(){
    public void callBack( String result );
}

public void Get(final myCallBack callback) {
    Log.i(TAG, "GET()");
    // GET method example
    new AsyncTask<Void, Void, String>() {

        protected String doInBackground(Void... parameters) {
            API api = new API(mApiKey, mApiSecret);

            List<NameValuePair> params = new ArrayList<NameValuePair>();       
            params.add(new BasicNameValuePair("api_key", mApiKey));                     

            return api.get("category", params);
        }

        protected void onPostExecute(String result) {  // *** >I NEED THIS result< ***
            Log.i(TAG + " - APIRESULT", "GET() => " + result);
            callback.callBack( result );
        }

    }.execute();
}

来自班级:

...

get( new myCallBack(){ 
   public void callBack(String result ){
   //do something with result.
   }
} 
);

答案 1 :(得分:0)

一个。 public void Get(){}这没有任何用于将值返回给调用者的arragment B.即使它有一个返回类型,它是无关紧要的,因为你在方法中生成一个AsyncTask,返回    价值与经营结果无关。

现在出现问题,可以通过Observer设计模式解决。这是我对某个类似问题的回复,请仔细阅读。这将解决您的问题。 Observer Design