2012-07-13 1 views
0

편집 : 문제가 해결되었습니다. 그것을 세계화하십시오. 나는 지금 당장 얼굴 표정을하고있다. 감사!asynctasks 사전/사후 실행 방법에서 ProgressDialog 사용

다음은 AsyncTask를 확장하는 클래스의 일부 발췌입니다. preExecute() 메서드에서 progressDialog를 시작하고 progressDialog.dismiss(); postExecute() 메소드에서. 내가 찾은 모든 사례는 아래처럼 그것을 말합니다. 문제는 대화 상자가 onPostExecute의 범위를 벗어났습니다. 이것을 제외하고는 모든 예가 이런 식으로 생각됩니다. 나는 또한 수입품에 수입품이 사용되지 않는다는 작은 경고 표시가 있다는 것을 알아 차렸다. 이 ProgressDialog가 작동해야합니까? 나는 그것을 주변에 전달해야합니까?

import android.app.ProgressDialog; 
... 

protected void onPostExecute(Bitmap image){//error when doing this in resetDisplay.... onPostExecute is invoked by the ui thread so this may be why it works here and not in resetDisplay 
        ImageView imageView=(ImageView) parent.findViewById(R.id.imageDisplay); 
        imageView.setImageBitmap(image); 

        dialog.dismiss(); 

       } 
protected void onPreExecute(){ 
        ProgressDialog dialog=ProgressDialog.show(parent, "Loading", "Loading the image of the day"); 
       } 
+0

[이 견적을 참조하십시오 ...] (http://samir-mangroliya.blogspot.in/p/android-asynctask-example.html) –

+0

나는 ProgressDialog 변수의 참조에 문제가있을 수 있다고 생각합니다. . 링크에서와 같이 사용해야합니다. http://stackoverflow.com/questions/11339847/how-to-add-progressdialog/11339895#11339895 – Nermeen

답변

1
class YourClass extends AsyncTask<...> 
{ 
    ProgressDialog dialog; 
    Protected void onPreExecute(){ 
     // create dialog here 
     dialog= new ProgressDialog (...); 
    } 
    protected void onPostExecute(Bitmap image){ 
     // 
     dialog.dismiss(); 
    } 
} 

dialog.setMessage("Your Messgae"); 
dialog.show(); 

로와 onPostExecute()에서 onPreExecute()에서 대화 상자를 사용 TEH 활동 또는 비동기 작업 내에서 다음과 같이 선언

0

당신은 onPreExecute() 외부 ProgressDialog dialog를 선언 활동에 대화 상자를 선언 한 후 preExecute()와 postExecute() 메소드에 사용할 필요가있다.

ProgressDialog dialog=new Progress Dialog(YourActivity.this); 

그런 다음

dialog.dismiss(); 
2

아래 코드 참조

private class ProgressTask extends AsyncTask<String, Void, Boolean> { 

    private ProgressDialog dialog = new ProgressDialog(HomeActivity.this); 

    /** progress dialog to show user that the backup is processing. */ 
    /** application context. */ 

    protected void onPreExecute() { 
     this.dialog.setMessage("Please wait"); 
     this.dialog.show(); 
    } 

    protected Boolean doInBackground(final String... args) { 
     try { 

      /** 
      * Fetch the RSS Feeds from URL 
      */ 
      Utilities.arrayRSS = objRSSFeed 
        .FetchRSSFeeds(Constants.Feed_URL); 
      return true; 
     } catch (Exception e) { 
      Log.e("tag", "error", e); 
      return false; 
     } 
    } 

    @Override 
    protected void onPostExecute(final Boolean success) { 

     if (dialog.isShowing()) { 
      dialog.dismiss(); 
     } 

     if (success) { 
      // display UI 
      UpdateDisplay(); 
     } 
    } 
}