我的应用正在从网络服务器加载一些数据。这次我希望有一个进度对话框,以避免给应用用户出现黑屏。
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 :(得分: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;
}
});