ProgressDialog不能停止

时间:2011-01-22 19:10:50

标签: java android progressdialog

我的应用正在从网络服务器加载一些数据。这次我希望有一个进度对话框,以避免给应用用户出现黑屏。

 Button ok = (Button) findViewById(R.id.ok);
        ok.setOnClickListener(new View.OnClickListener() {
              public void onClick(View view) {
                 MyDialog = ProgressDialog.show( yassou.this, " " , " Loading. Please wait ... ", true);
                    MyDialog.show();
               // myIntent.username.getText();
                  try {

                      Send();

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                  Status();
                  //MyDialog=null;
              } 

          });

这是btn女巫“onclick”正在加载数据。Send();是一种方法,它发送用户输入到我的服务器的一些数据,Status();是第二种方法,指引我到一个新页面。不幸的是,当我按下确定按钮,应用程序首先转到第二页然后出现一个不间断的进度对话框。请问我的错了吗?

2 个答案:

答案 0 :(得分:1)

当你不再需要它们时,你必须解雇对话框。在您发送到“第二页”后会出现,因为在更改UI之前执行了所有onClick()代码。

Send()或线程中完成所有Status()AsyncTask工作非常重要(最后,这将取消对话框),因为该代码正在执行UI将被锁定,并且将无法显示该对话框。此外,如果作业太长,您可能会收到应用程序无响应(ANR)消息。

一个好的规则是在UI线程中执行的任何方法都应该持续不到200毫秒,以保证响应能力,而不是让用户感到迟钝。

Creating Dialogs(来自Android Dev)

答案 1 :(得分:0)

试试这个

 Button ok = (Button) findViewById(R.id.ok);
    ok.setOnClickListener(new View.OnClickListener() {
          public void onClick(View view) {
             MyDialog = ProgressDialog.show( yassou.this, " " , " Loading. Please wait ... ", true);
                MyDialog.show();
           // myIntent.username.getText();
              try {

                  Send();

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            MyDialog.dismiss();
              Status();
              //MyDialog=null;
          } 

      });