大家好在我的应用程序中,我在asynctask类中添加了进度对话框,如下所示。这个asynctask在oncreate方法中调用。
class GettingData extends AsyncTask<URL, Integer, Long>
{
protected void onPreExecute()
{
dialog=MyProgressDialog.show(getParent(), null,null);
}
@Override
protected Long doInBackground(URL... arg0) {
try{
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpPost = new HttpGet(DataUrls.map);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
String response = EntityUtils.toString(httpEntity);
}catch(Exception e){
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Long result) {
try{
Map_ExpandableAdapter mNewAdapter = new Map_ExpandableAdapter(MapViewActivity.this,groupItem, childItem,lstMenus,places);
mNewAdapter.setInflater((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE),MapViewActivity.this);
lstMenus.setAdapter(mNewAdapter);
// lstMenus.setOnChildClickListener(MapViewActivity.this);
UtilsListViewHeight.setListViewHeightBasedOnChildren(lstMenus);
}catch(Exception e)
{
e.printStackTrace();
}
dialog.dismiss();
}
}//closing asynchronous process
这是我正在使用的Progressdialog
public class MyProgressDialog extends Dialog {
public static MyProgressDialog show(Context context, CharSequence title,
CharSequence message) {
return show(context, title, message, false);
}
public MyProgressDialog(Context context) {
super(context, R.style.NewDialog);
}
}
在asynctask类中我传递了实例 getParent(),因为我正在使用tabs.But我得到了这样的错误
引起:android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌android.os.BinderProxy@441cf040无效;你的活动在运行吗?
所以请告诉我这是什么问题。谢谢所有InAdvanced
答案 0 :(得分:0)
似乎您没有将当前的Activity作为上下文传递,而是您似乎正在传递当前活动的父级。
替换
dialog=MyProgressDialog.show(getParent(), null,null);
与
dialog=MyProgressDialog.show(MyActivity.this, null,null);
其中MyActivity是当前活动的名称。
答案 1 :(得分:0)
正如错误所说&#34;您的活动是否正在运行&#34;
你忘记了解雇你的对话 这些事件可能已经发生
当您切换到其他活动而不关闭已经显示的对话框时 方案: 在切换到其他活动之前,请确保关闭对话框。
或者当发生异常并且您的活动已关闭但对话框未关闭时..
解决方案: 我看到你在catch区块中调用dismiss。