Java Android中的ProgressDialog-指示器显示满,即使是30%

Java Android中的ProgressDialog-指示器显示满,即使是30%,java,android,multithreading,Java,Android,Multithreading,我正在尝试创建一个进度对话框,如下代码所示。 但问题是,当我点击cancel并再次点击进度条(编辑:显示进度条按钮)时,它并没有按预期工作。指示器移动得更快,有时甚至没有完成就退出了 这是我在屏幕截图上单击“单击以显示…”按钮时调用onClick3的代码 ProgressDialog progressDialogAdvanced; public void onClick3(View v ){ showDialog(1); progressDialogAdvanced.setPr

我正在尝试创建一个进度对话框,如下代码所示。 但问题是,当我点击cancel并再次点击进度条(编辑:显示进度条按钮)时,它并没有按预期工作。指示器移动得更快,有时甚至没有完成就退出了

这是我在屏幕截图上单击“单击以显示…”按钮时调用onClick3的代码

ProgressDialog progressDialogAdvanced;

public void onClick3(View v ){
    showDialog(1);
    progressDialogAdvanced.setProgress(0);
    t = new Thread(new Runnable() {
        @Override
        public void run() {
            for(int i = 1; i <=10; i++){
                try{
                    Thread.sleep(500);
                    progressDialogAdvanced.incrementProgressBy((int)10);
                }catch(InterruptedException e ){
                    e.printStackTrace();
                }
            }
            progressDialogAdvanced.dismiss();
        }
    });
    t.start();
}

编辑:

使用了cancel()而不是Disclose()。使用的处理程序如下所示 还是不能解决任何问题。我必须等到线程被破坏

for(int i = 1; i <=10; i++){
    try{
        Thread.sleep(500);                      
    }catch(InterruptedException e ){
        e.printStackTrace();
}
    progressBarHandler.post(new Runnable() {
       public void run() {
           progressDialogAdvanced.incrementProgressBy(10);
   }
    });
}
progressDialogAdvanced.cancel();

对于(int i=1;i您需要添加进度的最大大小,如:

progressBar.setMax(100);

请参阅此示例:

这没有任何区别。在我单击“取消”并再次启动对话框后,它有时甚至在20%之前退出……或者移动得太快。
是否显示对话框(1)
从类
ProgressDialog
调用静态方法
show
?哇,这段代码真的有效并且没有引发异常吗?使用
处理程序
可能吗?@SherifelKhatib它有效。我也使用了处理程序,但即使这样也没有任何区别。在onClick u中的主线程上创建处理程序唱
final Handler mHandler=new Handler();
然后在for循环中替换
progressDialogAdvanced.incrementProgressBy((int)10);
by
mHandler.post(new Runnable(){public void run(){progressDialogAdvanced.incrementProgressBy((int)10);});
progressBar.setMax(100);