无法从非UI线程显示ProgressDialog。如何?

时间:2012-02-08 14:52:57

标签: android progressdialog

尝试显示ProgressDialog,但获取: 无法在未调用Looper.prepare()的线程内创建处理程序。

这是我的代码:

    public class SocketThread implements Runnable {
    BufferedReader in;
    private ProgressDialog dialog;

    public void run() 
    {
        socket = null;

        while (true)
        {
            // Loop until connected to server
            while (socket == null){
                dialog = new ProgressDialog(getApplicationContext());
                dialog.setMessage("Connecting to " + gatewayString);
                dialog.setIndeterminate(true);
                dialog.setCancelable(true);
                AdvancedMultipleSeriesGraph.this.runOnUiThread(new Runnable() {     
                    public void run() {
                        dialog.show();

                    }
                });

可以修复吗?

2 个答案:

答案 0 :(得分:4)

您可以使用处理程序并使用Handler.post(Runnable),或者,如果您有活动上下文,则可以使用Activity.runOnUiThread(Runnable action)

答案 1 :(得分:0)

从不!!! 从与UI线程不同的线程执行UI更新。

解决方案可能是在创建线程时在处理程序上添加引用,以便您可以在UI线程中调度更新通知。