2014-09-19 2 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

반환 형식을 .. 메서드를 제공하고 해당 메서드를 호출 할 때 문자열 개체에 응답을 저장합니다. –

답변

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. 공공 무효 발신자 B에 다시 값을 반환이 나던 어떤 arragment이} {) (가져 오기 AsyncTask 메서드 내에서 산란하기 때문에 리턴 타입, 그것의 irrelevnt를 가지고있다. 반환 값은 작동의 결과와 무관하다.

문제가 발생하면 Observer design pattern을 통해이 문제를 해결할 수 있습니다. 여기에 비슷한 질문에 대한 제 응답이 있습니다. 이렇게하면 문제가 해결됩니다. Observer Design

관련 문제