2014-09-19 5 views
0

Как вызвать метод в другом классе и получить результат в MainActivity.Как вызвать метод

Я вызываю метод Get в своем API. Но я не знаю, как передать данные результата обратно 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 Я могу запустить метод, но не знаю, как к дате результата здесь.

Thanks

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

A. общественного недействительными Get() {} это оленья кожа имеет никакого arragment для возвращения значения обратно к вызывающему B. даже если у него есть тип возвращаемого значения, его нерелевантность, так как вы создаете метод AsyncTask внутри метода, значение не имеет значения для результата операции.

Теперь, придя к вашей проблеме, это можно решить с помощью шаблона проектирования Observer. вот мой ответ на аналогичный вопрос когда-нибудь, пройдите через него. это решит вашу проблему. Observer Design

Смежные вопросы