2013-03-22 4 views
0

AsyncTask에서 일부 처리를 수행하는 일부 코드가 있습니다. 실행되는 동안 진행률 대화 상자를 표시하고 싶습니다. 다양한 지점에서 메시지를 업데이트하기를 원했지만 약간의 문제가 있습니다. Heres는 지금까지 무엇을 :Android : AysncTask의 진행 대화 상자 오류

class ShowDialogAsyncTask extends AsyncTask<Void, String, Void>{ 

    private ProgressDialog progressSpinner; 

     @Override 
     protected void onPreExecute() { 
     ProgressDialog progressSpinner = new ProgressDialog(MainActivity.this); 
     progressSpinner.setTitle("File Download"); 
     progressSpinner.setMessage("Connecting to Internet"); 
     progressSpinner.show(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) 
     { 
      Log.v("doInBackground","1"); 
      try { 
       Log.v("doInBackground","2"); 
       onProgressUpdate("Downloading File"); 
       //do some stuff 
      } catch (IOException e) { 
       result = "Error"; 
      } 

      onProgressUpdate("Complete!"); 
      SystemClock.sleep(300); 
      return null; 
     } 

     protected void onProgressUpdate(String... values) 
     { 
     Log.e("onProgressUpdate",values[0]); 
     try{ 
     progressSpinner.setMessage(values[0]); 
     }catch(Exception e){Log.e("onProgressUpdate","Error!");} 
     Log.e("onProgressUpdate","Success!"); 
     } 

     @Override 
     protected void onPostExecute(Void result) 
     { 
     progressSpinner.dismiss(); 
     vf.showNext(); 
     } 
} 

I 작동하지 않는 메시지를 업데이트 한 것이라고 기대했다 코드는, 그냥 예외가 발생합니다. 그런 다음 진행 대화 상자를 닫으려고 할 때 모든 것이 충돌합니다.

나는 모든 포인터를 매우 고맙게 생각할 정도로 안드로이드 개발에 새로운 경험이 있습니다.

Logcat 항목은 약간 배 모양입니다.

03-22 22:59:30.189: W/dalvikvm(8133): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
03-22 22:59:30.189: E/AndroidRuntime(8133): Uncaught handler: thread main exiting due to uncaught exception 
03-22 22:59:30.195: E/AndroidRuntime(8133): java.lang.NullPointerException 

--UPDATE--

내가 진행 대화 상자를 선언했다 어디에 내 문제가 있었다 나타납니다. 나는 결국 내가 뭔가를 다음 AsyncTask를 클래스 액세스의 모든 다른 방법이 메시지를 업데이트 할 수 있습니다 것입니다 그래서

progressSpinner = new ProgressDialog(mContext); 

처럼 새로 만든 생성자에서 진행 대화 상자를 선언 할 수 있다는 것을 알아 냈다.

+0

내 대답을 확인하십시오 – Droidman

답변

2

ProgressDialog을 생성하는 동안 문제가 아마도 MainActivity을 참조하는 것일 수 있습니다. 클래스의 객체 생성 동안 MainActivity

 public ShowDialogAsyncTask(Context c){ 
      mContext = c; 
     } 

패스 this : 당신의 AsyncTask

  ShowDialogAsyncTask task = new ShowDialogAsyncTask(this); 

을 만들 ProgressDialog 것을 사용하여 AsyncTaskmContext라는 이름의 클래스 필드가 public 생성자를 추가 문맥

+0

여전히 동일한 오류가 발생합니다 – cosmicsafari

+0

가능한 경우 LogCat 출력을 게시하십시오 – Droidman

+0

전체 코드가 없어도 무엇이 잘못되었는지를 말하기는 어렵지만 AsyncTask를 사용하여 이미지를 다운로드하고 진행 상황을 보여주는 방법을 살펴볼 수 있습니다. http://stackoverflow.com/questions/15549421/how-to- 다운로드 및 저장 - 이미지 - 안드로이드 – Droidman