自己新建了一个对话框,在响应确定键里边有一个比较耗时的操作,现在想在执行操作的时候加一个圆形进度条的对话框,让用户知道不是程序死掉了,还在正常运行,自己尝试了一下,加的圆形进度条的对话框一直没有显示啊
AlertDialog.Builder dialog = new AlertDialog.Builder(MyActivity.this);
dialog.setTitle(file.getName());
dialog.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Dialog dlg = new Dialog(MyActivity.this);
dlg.setTitle("请等待");
dlg.setContentView(R.layout.pro_dialog);// 这里添加的是一个包含圆形进度条的对话框
dlg.show();
------这里就是添加的那个耗时程序-----
dlg.dismiss();
});
dialog.create().show();

解决方案 »

  1.   

    Dialog dlg = new Dialog(MyActivity.this);
     dlg.setTitle("请等待");
    dlg.setContentView(R.layout.pro_dialog);// 这里添加的是一个包含圆形进度条的对话框
    dlg.show();
    ------这里就是添加的那个耗时程序-----
    dlg.dismiss();
    改用AsyncTask方式实现:new testTask().execute();private class testTask extends AsyncTask<String, Void, Boolean>
        {
         private ProgressDialog progressDialog;
            @Override
            protected void onPreExecute()
            {
                progressDialog = new ProgressDialog(MainService.this);
                progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                progressDialog.setTitle("提示");
                progressDialog.setMessage("正在...");
                progressDialog.setIndeterminate(false);
                progressDialog.show();
            } @Override
    protected Boolean doInBackground(String... params) {
    // TODO Auto-generated method stub
    ------这里就是添加的那个耗时程序----- return null;
    }

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

  2.   

    我还要返回一个数据,自己做了一下用while(!isCancelled());判断程序结束,不行,然后自己有定义了一个变量isEnd,是在耗时程序完了之后赋值为true,还是不行,程序就直接卡在哪儿了,一直不出来了,不返回数据的时候你的方法是没有问题的,求解决
    testTask tast = new testTask(mContext, file);
    tast.execute();
    while(!tast.isCancelled());// 程序就一直死在这儿了,自己添加的isEnd也是一样的long size = tast.getSize();// 自己写的,返回的是耗时函数的结果