【发布时间】:2010-06-25 21:02:09
【问题描述】:
我试图在我的AsyncTask 获取数据时显示一个简单的ProgressDialog。在我的onPreExecute() 方法中,我有这个:
pd = ProgressDialog.show(c, "Loading...", "Please wait");
c 是从this.getApplicationContext() 传递给我的AsyncTask 的构造函数的上下文。不幸的是,我不断收到这条消息的异常:
无法添加窗口 -- Token null 不适用于应用程序
我做错了什么?
更新:使用this 代替this.getApplicationContext() 发现了另一个问题。当我调用ProgressDialog.show(... 时,会显示一个ProgressDialog,但直到AsyncTask 完成后才会显示。换句话说,数据加载,然后显示对话框。如果我在onPostExecute() 中包含pd.dismiss(),那么我什至看不到对话框(可能是因为它在打开之前就关闭了)。
最终解决方案:事实证明,fetch.get() 占用了 UI 线程并且不让 ProgressDialog 显示。
【问题讨论】:
-
Ally - 谢谢,但我不确定它是完全相同的问题。公认的解决方案是关于一个据称已在 1.6 中修复的 Android 错误(我使用的是 2.1)。我确实找到了另一种解决方案,即在主活动中创建一个静态方法来显示 ProgressDialog。这也有同样的问题,在加载数据之后才会显示对话框。
标签: android android-asynctask progressdialog