2011-01-22 81 views
1

我的应用程序正在从Web服务器加载一些数据。这次我想有一个进度对话框,以避免应用程序用户黑屏。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();是引导我进入新页面的第二种方法。不幸的是,当我按下确定按钮时,应用程序首先进入第二页并且第二次出现不停的进度对话框。请问我的错在哪里?

+0

我曾尝试使用MyDialog.dismiss(); Status();之后; 。停止进度对话框,但当第二页开始时出现进度对话框 – 2011-01-22 19:32:20

回答

1

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

这一点很重要,你做的所有Send()Status()工作在AsyncTask或在一个线程(其中,在年底,将关闭该对话框),因为在执行该代码的用户界面将被锁定,并获无法显示对话框。此外,如果作业太长,您可能会收到应用程序无响应(ANR)消息。

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

Creating Dialogs(从Android开发人员)

+0

AsyncTask是推荐的方式 – bigstones 2011-01-22 19:43:58

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; 
      } 

     });