我的应用程序正在从web server.this时间加载一些数据,我希望有一个进度对话框,以避免应用程序用户看到黑屏。
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;
}
});Send();是将用户输入的一些数据发送到我的服务器的方法,Status();是第二个方法,它将我定向到一个新的page.unfortunately,当我按下ok按钮时,应用程序首先转到第二个页面,然后出现一个不停止的进度dialog.Where是我错了吗?
发布于 2011-01-23 03:41:40
当你不再需要对话框时,你不得不放弃它们。它出现在您被发送到“第二页”之后,因为所有的onClick()代码都是在UI发生更改之前执行的。
在AsyncTask或线程中执行所有的Send()和Status()工作是很重要的,因为在执行代码时,UI将被锁定,并且不能显示对话框。此外,如果作业太长,您可能会收到应用程序未响应(ANR)消息。
一个很好的规则是,在UI线程中执行的任何方法都应该持续少于200ms,以保证响应性,并且不会导致用户反应迟缓。
Creating Dialogs (来自Android Dev)
发布于 2012-05-15 18:32:20
尝尝这个
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;
}
});https://stackoverflow.com/questions/4769953
复制相似问题