在Android中显示多个对话框

时间:2012-08-18 17:14:03

标签: android multithreading dialog

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

1 个答案:

答案 0 :(得分:0)

您无法从后台线程显示对话框。这已在另一个问题thread中得到解答。

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