2011-12-24 2 views
0
Document doc = new Obtainer(context, uri).execute().get(); 

Этот код в классе деятельности оказывает OBTAINER (который проходит AsyncTask), который получает документ XML из URL. Это метод onPreExecute:ProgressDialog не показан в AsyncTask

protected void onPreExecute() { 
     super.onPreExecute(); 
     System.out.println("Pre execute began"); 
     exception = null; 
     dialog = new ProgressDialog(context); 
     dialog.setMessage("Loading started"); 
     dialog.setIndeterminate(true); 
     dialog.setCancelable(false); 
     System.out.println("Preexecute end"); 
     dialog.show(); 
    } 

контекст установлен в конструкторе:

public Obtainer(Context c, String addr) { 
    context = c; 
    address = addr; 
} 

Во время выполнения я могу видеть в выводе на консоль как «Pre Execute начал» и «Preexecute конец», но диалог прогресса не отображается. В чем проблема?

+0

Ваш код выглядел хорошо, просто знать, что контекст, в документ Document = новый OBTAINER (контекст, Ури) .Execute() получаем() ;?. Попытайтесь поместить <ваше имя_имя>. Это вместо контекста ... – user370305

ответ

0

Используйте этот код, он работает для меня:

class Obtainer extends AsyncTask<Void, Void, Void> { 
    private ProgressDialog dialog; 

    @Override 
    protected void onPreExecute() { 
     dialog = new ProgressDialog(App.this); // App - your main activity class 
     dialog.setMessage("Please, wait..."); 
     dialog.show(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
       // ... 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     dialog.dismiss(); 
    } 

} 

И в основной вызов метода класса активности

new Obtainer().execute(); 
0

Что Context вы проходя при создании OBTAINER (AsyncTask подкласс)?

Если вы используете контекст приложения через getApplicationContext(), его нельзя использовать для создания диалога (или любого вида в этом отношении). Вам нужно передать контекст, который может создавать виды.

«Если у вас есть привычка использовать контекст вашего приложения (например, от вызова getApplicationContext()) в тех местах, где вам нужен контекст для создания представлений, это всего лишь вопрос времени, пока вы не найдете случай, когда вещи не работают так, как вы хотели бы или ожидали ».

От: https://plus.google.com/107708120842840792570/posts/VTeRBsAeyTi

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