我正在使用Async Task在我的数据库中执行某些操作。在操作过程中,我显示了一个进度对话框,当操作完成时,我想解雇它,但它没有工作。
private ProgressDialog progressDialog;
private void showProgressDialog(String title, String message)
{
progressDialog = new ProgressDialog(this);
progressDialog.setTitle(title); //title
progressDialog.setMessage(message); // message
progressDialog.setCancelable(true);
progressDialog.show();
}
private class InsertFoodAsyncTask extends AsyncTask<Void, Integer, String>{
@Override
protected String doInBackground(Void... arg0){
InsertFood p = new InsertFood(Food.this,mBDD);
p.InsertFood();
return "Executed";
}
@Override
protected void onPreExecute() {
showProgressDialog("Please wait...", "Your message");
}
@Override
protected void onPostExecute(String result) {
if(progressDialog != null && progressDialog.isShowing())
{
progressDialog.dismiss();
}
}
}
你能帮帮我吗?非常感谢!
答案 0 :(得分:1)
试试吧,
取代:
progressDialog.show();
有:
progressDialog = progressDialog.show();
答案 1 :(得分:0)
您的代码似乎都是正确的。 onPostExecute()
已经使它在ui线程上运行。但是仍然试着用这个来检查。
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if(progressDialog != null && progressDialog.isShowing())
{
progressDialog.dismiss();
}
}
});