1

我的应用程序正在从 Web 服务器加载一些数据。这次我想要一个进度对话框,以避免应用程序用户出现黑屏。

 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();的方法,也是将我引导到新页面的第二种方法。不幸的是,当我按下确定按钮时,应用程序首先进入第二页,然后出现非停止进度对话框。请问我哪里错了?

4

2 回答 2

1

当您不再需要对话框时,您必须关闭它们。它出现在您被发送到“第二页”之后,因为所有onClick()代码都是在 UI 更改发生之前执行的。

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

一个好的规则是在 UI 线程中执行的任何方法都应该持续不到 200 毫秒,以保证响应性并且不会导致用户反应迟缓。

创建对话框(来自 Android Dev)

于 2011-01-22T19:41:39.950 回答
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;
          } 

      });
于 2012-05-15T10:32:20.280 回答