1

我有一个场景,我的应用程序尝试连接到服务器,同时显示 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();
            }
        }
    }
4

1 回答 1

0

您无法显示来自后台线程的对话框。这已经在另一个问题线程中得到了回答。

无论如何尝试使用处理程序或在ui 线程上运行可运行。

于 2012-08-18T17:53:57.860 回答