【发布时间】:2016-04-21 20:07:52
【问题描述】:
我一直在尝试让 ProgressDialog 工作。
起初,我将它放在活动中,但无论我尝试了多少排列和组合,它都没有显示出来。
然后我将它移到 AsyncTask 中。我正在初始化并在 onPreExecute 中显示它,并在 onPostExecute 中将其关闭。
@Override
protected void onPreExecute(){
try {
dialog = new ProgressDialog(context,
ProgressDialog.STYLE_SPINNER);
dialog.setTitle("Please Wait");
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setIcon(R.drawable.ic_error);
dialog.show();
} catch (Exception e) {
Log.e(TASK_TAG, ExceptionUtils.getStackTrace(e));
}
}
但是,我不确定应该使用什么作为上下文。当我尝试 activity.getApplicationContext 时,抛出以下异常 android.view.WindowManager$BadTokenException: Unable to add window -- token null 不适用于应用程序。
尝试使用活动时,对话框不显示。
当我将 dialog.show 包含在 try / catch 中时,它不显示。当它没有被封闭时,似乎异常会关闭应用程序。
我有几个问题-
- 显示进度对话框的推荐方式是什么?是通过异步任务吗?
- 如果是,应该使用什么作为上下文?
- 如果是上面提到的两个选项之一,为什么 App 会抛出这些异常?
【问题讨论】:
-
显示您的代码。您应该使用当前活动活动的上下文