2014-09-19 69 views
0

如何調用不同類的方法,並在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中,我可以運行該方法,但不知道如何在這裏結果日期。

謝謝

+0

提供返回類型的方法..當你調用字符串對象,這個方法...存儲響應.. – 2014-09-19 05:19:28

回答

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. 
    } 
} 
); 
0

A.公共無效的get(){}這並不具有任何arragment返回一個值回調用者 B.即使它有一個返回類型,其irrelevnt,因爲你裏面產卵方法的AsyncTask,返回 值無關緊要操作的結果。

現在來到你的問題,這可以通過Observer設計模式來解決。這裏是我回應類似的問題,經歷它。這將解決您的問題。 Observer Design

相關問題