2014-11-03 1 views
0

나는 DownloadPicture 메서드를 사용하여 AsyncTask를 실행하는 클래스가 있습니다. 클래스는 class MainActivity extends Activity의 하위 클래스가 아닙니다. DownloadPicture 메서드를 사용하여 ProgressDialogs를 표시하려면 어떻게해야합니까? 나는 클래스 conatructor에 MainActivity.this을 전달할 수 있다고 생각하지만 다른 방법이 있습니까?MainActivity 클래스가 아닌 Android ProgressDialog 사용

+0

다양한 방법이 있습니다. 그러나 생성자 방식은 안전합니다. –

+0

생성자를 사용하고 컨텍스트를 생성자에 전달합니다. 당신이 더 좋은 방법으로 설명 할 수있는 코드 스 니펫을 제공한다면 – Amy

답변

1

이 방법을 시도해보고 문제를 해결하는 데 도움이되기를 바랍니다.

는 생성자에서 DownloadPicture 클래스 활동 컨텍스트를 전달하고 onPreExecute()에 ProgressDialogs를 초기화 :

public class ProgressDialogs extends AsyncTask<Void,Void,Void>{ 

    private Context context; 
    private ProgressDialog progressDialog; 
    public ProgressDialogs(Context context){ 
     this.context=context; 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     progressDialog = ProgressDialog.show(context, "dialog title","dialog message", true); 

    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     // do you background code here 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
     if(progressDialog!=null && progressDialog.isShowing()){ 
      progressDialog.dismiss(); 
     } 
    } 
} 
0

사용하는 인터페이스를 사용자 AsyncTask를에서 활동 콜백 할 수 있습니다. 그리고 당신은 ProgressDialog로 당신의 활동에서 무엇이든 할 수 있습니다. 코드 샘플을 제공 할 수 있는지 자세히 설명 할 수 있습니다.

관련 문제