2012-06-06 2 views
0

Почему я получаю это исключение из null-указателя. Вот мой код я получаю исключение в методе OnProgressUpdate после моего первого исполнения publishProgress от метода doInBackgroundИсключительное исключение указателя при установкеПрогресс в диалоговом окне прогресса android

private class ScanVideoTask extends AsyncTask<String, Integer, String> { 
     private AsyncTaskCompleteListener<String> callback; 
     private Context context; 
     private String resultOutput; 
     private ProgressDialog mProgressDialog; 

     public ScanVideoTask(AsyncTaskCompleteListener<String> cb) { 
      this.callback = cb; 
     } 

     protected String doInBackground(String... args) { 
      // Get the URI of the video path & display it for a short period. 
      String filename = args[0]; 

      int i= 0; 
      while(i < 1000000) 
      { 
       i++; 
       int progressPercentage = (int)(((float)i/(float)1000000) * (float)100); 
       publishProgress(progressPercentage); 
      } 
      return "ok"; 

     } 

     protected void onProgressUpdate(Integer... progress) { 
      mProgressDialog.setProgress(progress[0]); 
     } 

     protected void onPreExecute() { 
      super.onPreExecute(); 
      showDialog(DIALOG_DOWNLOAD_PROGRESS); 
      } 

     protected void onPostExecute(String result) { 
      System.out.println("on Post execute called" + result); 
      dismissDialog(DIALOG_DOWNLOAD_PROGRESS); 
      callback.onTaskComplete(result); 
     } 
    } 

Вот что в моем onCreateDialog

@Override 
     protected Dialog onCreateDialog(int id) { 
      switch (id) { 
      case DIALOG_DOWNLOAD_PROGRESS: 
       mProgressDialog = new ProgressDialog(this); 
       mProgressDialog.setMessage("Scanning video.."); 
       mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
       mProgressDialog.setCancelable(true); 
       mProgressDialog.show(); 
       return mProgressDialog; 
      default: 
       return null; 
      } 
     } 

Что мне не хватает?

+0

Пожалуйста, добавьте StackTrace. –

+0

Возможно, вы не проходите DIALOG_DOWNLOAD_PROGRESS к методу OnCreate? Это объясняет, почему он не инициализируется. – Guardanis

ответ

0

mProgressDialog вашего ScanVideoTask, кажется, никогда не инициализирован. Где вы запускаете свой ScanVideoTask?

+0

мой плохой. просто не понял. Спасибо – user973743

0

Измените метод onPreExcecute, как описано ниже:

protected void onPreExecute() 
 
{ 
 
super.onPreExecute(); 
 
mProgressDialog = new ProgressDialog(this); 
 
showDialog(DIALOG_DOWNLOAD_PROGRESS); 
 
}

Смежные вопросы