AsyncTask中的ProgressDialog抛出异常

Com*_*ish 6 android progressdialog android-asynctask

我正在尝试在获取数据ProgressDialog时进行简单的显示AsyncTask.在我的onPreExecute()方法中我有这个:

pd = ProgressDialog.show(c, "Loading...", "Please wait");
Run Code Online (Sandbox Code Playgroud)

c传递到我的构造背景下AsyncTaskthis.getApplicationContext().不幸的是,我不断收到此消息的异常:

无法添加窗口 - 令牌null不适用于应用程序

我究竟做错了什么?

更新:使用this而不是this.getApplicationContext()显示另一个问题.当我打电话时ProgressDialog.show(...,会显示ProgressDialog,但直到AsyncTask完成后才会显示.换句话说,数据加载然后显示对话框.如果我包括pd.dismiss()在我onPostExecute()当时我甚至从未看到对话框(因为它在打开之前已关闭).

最终解决方案:事实证明,这fetch.get()是占用UI线程而不是让ProgressDialog显示.

Pen*_*m10 4

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();
    }
Run Code Online (Sandbox Code Playgroud)

  • 那么你的上下文有问题。当您传递它时,将其从“this.getApplicationContext()”更改为“this”。或者,如果 AsyncTask 是 Context 类私有的,则只需将对外部类的引用用作“MyClass.this” (4认同)