在AsyncTask的完成后,无法取消ProgressDialog [英] Can't dismiss ProgressDialog after the AsyncTask complete

查看:147
本文介绍了在AsyncTask的完成后,无法取消ProgressDialog的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮忙,AsyncTask的完成后,我不能排除ProgressDialog。我搜索的答案,但没有发现。 这code正常工作时,我使用的线程,而不是AsyncTask的。 有什么想法?

 上下文appContext;
ProgressDialog PD;

@覆盖
公共无效的onCreate(包savedInstanceState)
{
   super.onCreate(savedInstanceState);
   appContext =这一点;
   MyTask的MyTask的=新MyTask的();
   myTask.execute();
}


类MyTask的扩展AsyncTask的<虚空,虚空,虚空>
{
   @覆盖
   在preExecute保护无效()
   {
      PD = ProgressDialog.show(appContext,等一下......,加载数据,
                    真假);
  pd.setCancelable(假);
      super.on preExecute();
   }

   @覆盖
   保护无效doInBackground(空...为arg0)
   {
  //东西
  返回null;
    }

   @覆盖
   保护无效onPostExecute(虚空结果)
   {
      如果(PD!= NULL)
        pd.dismiss();
  super.onPostExecute(结果);
   }
}
 

解决方案

 私人ProgressDialog progressDialog; //类变量

   私人无效showProgressDialog(标题字符串,字符串消息)
   {
        progressDialog =新ProgressDialog(本);

        progressDialog.setTitle(); //标题

        progressDialog.setMessage(); // 信息

        progressDialog.setCancelable(假);

        progressDialog.show();
   }
 

在preExecute()

 在preExecute保护无效()
    {
        showProgressDialog(请稍候...,您的信息);
    }
 

检查并关闭onPostExecute() -

 保护无效onPostExecute()
    {
        如果(progressDialog = NULL和放大器;!&安培; progressDialog.isShowing())
        {
            progressDialog.dismiss();
        }
     }
 

Please help, I can't dismiss ProgressDialog after AsyncTask complete. I searched for the answer but nothing found. This code works fine when I use Thread instead of AsyncTask. Have any ideas?

Context appContext;
ProgressDialog pd;

@Override
public void onCreate(Bundle savedInstanceState)
{
   super.onCreate(savedInstanceState);
   appContext=this;
   MyTask myTask=new MyTask(); 
   myTask.execute();
}


class MyTask extends AsyncTask<Void, Void, Void>
{
   @Override
   protected void onPreExecute() 
   {
      pd = ProgressDialog.show(appContext, "Wait..", "Loading data",
                    true, false);
  pd.setCancelable(false);
      super.onPreExecute();
   }

   @Override
   protected Void doInBackground(Void... arg0)
   {
  //something
  return null;
    }

   @Override
   protected void onPostExecute(Void result)
   {
      if (pd!=null)
        pd.dismiss();
  super.onPostExecute(result);
   }
}

解决方案

   private ProgressDialog progressDialog;   // class variable       

   private void showProgressDialog(String title, String message)
   {
        progressDialog = new ProgressDialog(this);

        progressDialog.setTitle(""); //title

        progressDialog.setMessage(""); // message

        progressDialog.setCancelable(false);

        progressDialog.show();
   }         

onPreExecute()

    protected void onPreExecute()
    {
        showProgressDialog("Please wait...", "Your message");
    }

Check and dismiss onPostExecute() -

    protected void onPostExecute() 
    {
        if(progressDialog != null && progressDialog.isShowing())
        {
            progressDialog.dismiss();
        }
     }

这篇关于在AsyncTask的完成后,无法取消ProgressDialog的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆