我有一个场景,我的应用程序尝试连接到服务器,同时显示 ProgressDialog,以便用户知道它正在联系服务器。但是,如果由于某种原因连接失败或拒绝,那么我想显示另一个对话框,说明连接被服务器拒绝或其他原因。
我正在做的是,显示 ProgressDialog 然后尝试与服务器连接,如果它抛出异常,那么我会显示 AlertDialog 并显示错误消息。但它不起作用,当我在 ProgressDialog 之后立即调用 AlertDialog 时,代码会抛出异常。我也关闭 ProgressDialog 然后启动 AlertDialog 但不起作用。
我需要改变我的方法还是我的代码有问题?这是我在代码中所做的
ProgressDialog pg = ProgressDialog.show(this, null, "Contacting server. Please wait...", false);
ConnectionThread ct = new ConnectionThread(web);
ct.setProgressDialog(pg);
ct.setErrorDialog(dialog);
ct.start();
这是 ConnectionThread 类,通过 webAccess 类尝试连接到服务器
public class ConnectionThread extends Thread {
private WebAccess _webAccess;
private ProgressDialog _progressDialog;
private AlertDialog _alertDialog;
public ConnectionThread(WebAccess webAccess) {
_webAccess = webAccess;
}
public void setProgressDialog(ProgressDialog dialog) {
_progressDialog = dialog;
}
public void setErrorDialog(AlertDialog dialog) {
_alertDialog = dialog;
}
@Override
public void run() {
try {
_webAccess.invoke();
_progressDialog.dismiss();
} catch (Exception ex) {
_progressDialog.cancel();
_alertDialog.show();
}
}
}