2013-06-18 4 views
0

Я новичок в Android, и я занимаюсь созданием диалогового окна прогресса. Я хочу изменить сообщение в диалоговом окне каждые пару секунд, но мое приложение вылетает, когда я меняю сообщение. Любые идеи, что я могу делать неправильно?Android - Progress Dialog падает при изменении сообщения

private void progressDialogTest(final ArrayList<String> messages) 
    { 
     AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() 
     { 
      private ProgressDialog progressDialog; 

      @Override 
      protected void onPreExecute() 
      { 
       progressDialog = new ProgressDialog(MainActivity.this); 
       progressDialog.setTitle("Progress Dialog"); 
       progressDialog.show(); 
      } 

      @Override 
      protected Void doInBackground(Void... arg0) 
      { 
       try 
       { 
        for(int i=0; i<messages.size(); i++) 
        { 
/******** APPLICATION SEEMS TO CRASH AT LINE BELOW ********/ 
         progressDialog.setMessage(messages.get(i)); 
         Thread.sleep(3000); 
        } 
       } 
       catch (InterruptedException e) 
       { 
        e.printStackTrace(); 
       } 
       return null; 
      } 

      @Override 
      protected void onPostExecute(Void result) 
      { 
       progressDialog.dismiss(); 
      } 
     }; 
     task.execute((Void[])null); 
    } 

enter image description here

+0

Вы доступ к элементам пользовательского интерфейса от фона, попробуйте использовать 'функцию publishProgress'. Погугли это. –

ответ

6

Переместить код onProgressUpdate вместо этого, например:

@Override 
protected void onProgressUpdate(Integer... progress) { 
    super.onProgressUpdate(progress); 
    progressDialog.setMessage(messages.get(progress[0])); 
} 

@Override 
protected void doInBackground(Void... arg0) { 
    /* ... */ 

    //progressDialog.setMessage(messages.get(i)); Change this line to 
    publishProgress(i); 

    /* ... */ 
} 
+0

Спасибо. Это сделал трюк. – Tony

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