2012-03-27 7 views
3

다운로드 진행 상태를 만들려고합니다. 내가 AsyncTask를 확장 내 수업이 있습니다 공용 클래스 DownloadFileTask은 AsyncTask를 확장AsyncTask android에서 다운로드 진행

내가 진행 만들려면 시작 다운로드 :

@Override 
    protected void onPreExecute() { 



    progressDialog = new ProgressDialog(whatContext); 
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
    progressDialog.setMessage("Loading..."); 
    progressDialog.setCancelable(false); 
    progressDialog.show(); 
    } 

을하지만 난 새해서 ProgressDialog를 제공해야하는지 컨텍스트 모른다 나는 활동 수업에 없기 때문에. 나는 어떤 상황 그러나이 오류를 주려고 노력 :

타입 Main_Tab의 어떠한 둘러싸는 인스턴스가 범위

그래서 내가이 진행 상황을 만들 수있는 방법을에 액세스 할 수 없습니다?

또한이 수업에서는 진전을 이루고 싶지 않지만 (별도의 기능과 디자인을 원하기 때문에) 어떻게해야할지 모르겠다.

도움을 주셔서 감사합니다.

+1

는 "내가 활동 클래스에서 아닙니다."와 같은 – Squonk

답변

3
public class DownloadFileTask extends AsyncTask{ 
Context mContext; 

    public DownloadFileTask(Context context) { 
      this.mContext = context; 

     } 


    @Override 
     protected void onPreExecute() { 



     progressDialog = new ProgressDialog(mContext); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     progressDialog.setMessage("Loading..."); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
     } 
    } 

는 DownloadTask 통화를 시작하려면 왜 안돼? AsyncTask의 주된 용도는`Activity`를 유지하지 않는 비동기 처리를 허용하는 것입니다. `AsyncTask`를 다른 방법으로 생성한다면 아마도 당신이해야 할 일을 다시 생각할 필요가있을 것입니다.
0

사용자 지정 AsyncTask Loaders의 생성자에 컨텍스트를 전달하는 것이 트릭을 수행 할 수 있다고 생각합니다.

2

당신은 예를 들어, 매개 변수로 Context 오브젝트를 당신의 AsyncTask에 대한 생성자를 만들어야합니다

public DownloadFileTask(Context context) { 
    this.context = context; 
} 

그런 다음 당신이 ProgressDialog를 초기화 context 필드를 사용할 수 있습니다. 두 번째 질문에 관해서는 대답 할만한 정보가 충분하지 않습니다. 희망이 도움이됩니다.

DownloadFileTask task = new DownloadFileTask(MyActivity.This); 
task.execute(); 
관련 문제