【发布时间】:2014-06-04 03:52:47
【问题描述】:
我一直在使用对话框来显示Asynctask 进度。通过这样做,我在onPreExecute 中对其进行了初始化,并在onPostExecute 中将其关闭。我不确定当我设置一个仅在它不为 null 并且它正在显示但仍触发 IllegalArgumentException: View not attached to window manager
代码如下:
public class SampleTask extends AsyncTask<String, Void, String> { public ProgressDialog pDialog; @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(SampleActivity.this); pDialog.setMessage(getString(R.string.loading)); pDialog.setCancelable(false); pDialog.show(); } @Override protected String doInBackground(String... path) { . . . } @Override protected void onPostExecute(String result) { super.onPostExecute(null); if (null != pDialog && pDialog.isShowing()) { pDialog.dismiss(); } . . . } }
我阅读了here 类似的解决方案,但如果我将null != pDialog && pDialog.isShowing() 放在相同条件下会有所不同吗?
【问题讨论】:
-
我认为代码是写的
-
删除 super.onPostExecute(null);
-
您旋转手机了吗?如果是,请尝试为该活动处理
configChanges。也试试这个protected void onCancelled() {if (null != pDialog && pDialog.isShowing()) { pDialog.dismiss(); } }; -
这通常发生在 configChanges 或 Activity 在调用 ProgressDialog.dismiss() 之前完成/销毁时
标签: android android-asynctask android-dialog illegalargumentexception