ProgressDialog в AsyncTask выдает исключение - PullRequest
6 голосов
/ 26 июня 2010

Я пытаюсь сделать простой ProgressDialog, пока мой AsyncTask извлекает данные. В моем onPreExecute() методе у меня есть это:

pd = ProgressDialog.show(c, "Loading...", "Please wait");

c - это контекст, переданный в конструктор моего AsyncTask из this.getApplicationContext(). К сожалению, я получаю исключение с этим сообщением:

Невозможно добавить окно - нулевой токен не для приложения

Что я делаю не так?

Обновление: Использование this вместо this.getApplicationContext() выявило еще одну проблему. Когда я звоню ProgressDialog.show(..., отображается ProgressDialog, но только после завершения AsyncTask. Другими словами, данные загружаются, а затем отображается диалоговое окно. Если я включу pd.dismiss() в свой onPostExecute(), то я никогда даже не увижу диалоговое окно (возможно, потому что оно закрыто до того, как оно откроется).

Окончательное решение: Оказывается, что fetch.get() занимал поток пользовательского интерфейса и не позволял отображать ProgressDialog.

Ответы [ 3 ]

4 голосов
/ 26 июня 2010
ProgressDialog dialog;
@Override
    protected void onPreExecute() {
        dialog = new ProgressDialog(viewContacts.this);
        dialog.setMessage(getString(R.string.please_wait_while_loading));
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);
        dialog.show();
    }
1 голос
/ 26 июня 2010

попробуйте это

  this.pd = ProgressDialog.show(this,"Loading...", "Please wait", true, false);

и да, я думаю, что та же проблема с вашим контекстом.

0 голосов
/ 13 августа 2015

Используйте YourClassName.this вместо getApplicationContext() или this.getApplicationContext()

...