2013-01-16 3 views
0

나는 HTTPClient를 사용하여 AsyncTask를 사용하여 웹 사이트의 HTML 코드를 얻고 코드를 내 주 활동으로 되 돌리려고한다. AsyncTask에서 다른 액티비티로 문자열 전달하기

가 나는 것을 (시도)을 수행하기 위해이 코드를 사용 : 나는 헛된 시도를 많이 시도하기 때문에,

이 내 AsyncTaskGet, 나는이 부분을 제외하고 주요 활동 내 모든 코드를 삭제 .

new AsyncTaskGet().execute(); 

그래서 기본적으로, TextView에 표시 할 문자열로 내 주요 활동에서 결과를 다시 얻는 것입니다. 현재로서는 내 응용 프로그램이 단순하여 AsyncTasks 사용의 기본 사항을 이해할 수 있고 인터넷 연결성 등을 확인하지 않았으므로 인터넷을 사용하는 매니페스트에 대한 사용 권한을 추가합니다 (분명히

그것이 실례 내 첫 애플 리케이션 중 하나)

마지막으로 한가지이기 때문에 조금 관대하시기 바랍니다 불쌍한 내 영어, 난 당신이 본해야하기 때문에 불행히도 영어 원어민입니다. 사전에

, 감사합니다.

감사합니다.

+1

영어가 좋지 않습니까? 어떤 불쌍한 영어? –

답변

2

귀하는 이미 onPostExecute()에 결과를 String으로 전달하고 있습니다. AsyncTaskActivity의 내부 클래스 인 경우 결과를 Activity의 필드 변수로 설정할 수 있습니다. 그렇지 않으면 Activity에있는 함수를 onPostExecute()에서 호출하여 데이터로 원하는 작업을 수행 할 수 있습니다.

또한, 가난한 영어 전혀 정말 나쁘지 않다 :

4

가장 쉬운 것은 당신의 AsyncTask를에 생성자를 통해 호출 활동을 전달하고 매개 변수로 결과를 가지고하는 방법을 만드는 것입니다 활동 그 자체.

private Activity mActivity; 

public AsyncTaskGet(Activity activity) { 
    mActivity = activity; 
} 

protected void onPostExecute(String result) { 
    mActivity.takeItBack(result);   
} 

은 몇 가지 제한이 있습니다 : 현재 코드는 AsyncTask를 및 활동 사이에 1-1 관계와 함께 작동, 전용 멤버 변수 유형은 당신이 그것을 부르는에서 활동해야 의미합니다. 인터페이스를 구현해야하는 경우 다음을 수행하십시오.

// interface 
public interface AsyncTaskCallback { 
    void takeItBack(String result); 
} 

// activity 
public MyActivity implements AsyncTaskCallback { 
    @Override 
    public void takeItBack(String result) { 
     // do something 
    } 
} 

// AsyncTask 
public class AsyncTaskGet extends AsyncTask<String, String, String> { 
    private AsyncTaskCallback mCallback; 

    public AsyncTaskGet(AsyncTaskCallback callback) { 
     mCallback= callback; 
    } 

    protected void onPostExecute(String result) { 
     mCallback.takeItBack(result);   
    } 
} 
관련 문제