请帮助,AsyncTask完成后我无法解除ProgressDialog。我搜索了答案,但没有找到。 当我使用Thread而不是AsyncTask时,此代码工作正常。 有什么想法吗?
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);
}
}
答案 0 :(得分:8)
private ProgressDialog progressDialog; // class variable
private void showProgressDialog(String title, String message)
{
progressDialog = new ProgressDialog(this);
progressDialog.setTitle(title); //title
progressDialog.setMessage(message); // message
progressDialog.setCancelable(false);
progressDialog.show();
}
onPreExecute()
protected void onPreExecute()
{
showProgressDialog("Please wait...", "Your message");
}
检查并解除onPostExecute() -
protected void onPostExecute()
{
if(progressDialog != null && progressDialog.isShowing())
{
progressDialog.dismiss();
}
}
答案 1 :(得分:0)
试试这个
private Context context;
private ProgressDialog dialog;
public LastStageTask(Context cxt) {
context = cxt;
dialog = new ProgressDialog(context);
}
@Override
protected void onPostExecute(String result) {
dialog.dismiss();
}