我对Android编程很陌生,所以请原谅我的愚蠢问题>,< 就像标题所说,我想在ProgressDialog完成后立即显示AlertDialog / Toast。我怎么能以正确的方式做到这一点?注意:我的处理程序只是关闭ProgressDialog(pd.dismissDialog())。
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnDoRegister:
pd = ProgressDialog.show(RegisterActivity.this, "",
"Registering with the server..");
new Thread() {
public void run() {
Looper.prepare();
//(hopefully) thread-safe implementations here
handler.sendEmptyMessage(0);
}
}.start();
if (status == registered) {
//show AlertDialog/Toast here
finish();
} else if (status == notRegistered) {
//show AlertDialog/Toast here
}
break;
}
更令人困惑的是,当我尝试调试时,LogCat什么也没显示,一切都运行正常(警报/ toast按预期显示)。但是当我试图正常运行时,不知怎的,我觉得这个运行得太快而且没有正确显示我的警报/吐司(听起来很愚蠢)。非常感谢你的帮助。
答案 0 :(得分:1)
更适合在处理程序的handleMessage方法中显示AlertDialog / Toast,
static Handler handler = new Handler() {
public void handleMessage(Message msg) { ... }};
答案 1 :(得分:0)
之所以发生这种情况,是因为您的线程在运行时很快就会完成工作。但是当你像其他程序语言一样调试它时,你依次顺序执行。但如果你仍然希望它长时间显示对话框,那么这样做(虽然没有实际用途)
new Thread() {
public void run() {
Looper.prepare();
//(hopefully) thread-safe implementations here
handler.sendEmptyMessage(0);
Thread.sleep(3000);
}
}.start();