Java AsyncTask中未解除ProgressDialog

Java AsyncTask中未解除ProgressDialog,java,android,Java,Android,我对异步任务有问题。我有一个带有三个复选框的活动,如果选中,则在用户按下按钮时启动异步任务。我的异步是这样的 private class MyTask extends AsyncTask<Void, Void, Void> { String valore public MyTask(String valore) { this.valore = valore; } @O

我对异步任务有问题。我有一个带有三个复选框的活动,如果选中,则在用户按下按钮时启动异步任务。我的异步是这样的

    private class MyTask extends AsyncTask<Void, Void, Void> {

String valore

            public MyTask(String valore) {
                this.valore = valore;
            }

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setMessage(getString(R.string.message));
                progressDialog.setIndeterminate(true);
                progressDialog.show();
            }

            @Override
            protected Void doInBackground(Void... params) {
                // TODO Auto-generated method stub
                // Exec some operations

                return null;
            }

            @Override
            protected void onPostExecute(Void result) {
                super.onPostExecute(result);
                if(risultato != null) {
                    textView.append(risultato);
                }
                if(errori != null) {
                    textView.append(errori);
                }
                progressDialog.dismiss();
            }

        }
问题是,如果选中了两个或三个复选框,则ProgressDialog不会被取消并保持在屏幕上。为什么?当选中两个或多个复选框时,如何取消选中

 try {
                            if ((pDialog != null) && pDialog.isShowing()) {
                                pDialog.dismiss();
                            }
                        } catch (final IllegalArgumentException e) {
                            // Handle or log or ignore
                        } catch (final Exception e) {
                            // Handle or log or ignore
                        } finally {

                            pDialog = null;
                        }
试着像这样取消对话框,它可能会解决您的问题

此代码中存在问题

 public void onClick(View v) {
                // TODO Auto-generated method stub
                if(checkBox.isChecked()) {
                    new MyTask("string").execute();
                }
                if(checkBox2.isChecked()) {
                    new MyTask("string2").execute();
                }
                if(checkBox3.isChecked()) {
                    new MyTask("string3").execute();
                }
            }        
这实际上是一个逻辑错误,如果我们干运行此代码,它将 随着选中复选框数量的增加,执行的次数相同。 假设您执行checkbox1以选中它将执行异步1次 当您单击checkbox2时,它将执行checkbox1 async以及checkbox2 async 如果是这样的话,那么在ClickListner上更改按钮的条件


您好,因为您每次都在创建一个新的progressDialog,所以它不会被取消。只创建一个,并将变量保留在公共位置。比如说

@Override
            protected void onPreExecute() {
                super.onPreExecute();
                if(progressDialog!=null){
                progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setMessage(getString(R.string.message));
                progressDialog.setIndeterminate(true);
                progressDialog.show();
               }
            }
你在用“doInBackground”方法做什么?请也写那个代码。 “risultato”和“errori”指的是什么

@Override
            protected void onPreExecute() {
                super.onPreExecute();
                if(progressDialog!=null){
                progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setMessage(getString(R.string.message));
                progressDialog.setIndeterminate(true);
                progressDialog.show();
               }
            }