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

Android 无法从非UI线程显示ProgressDialog。如何?,android,progressdialog,Android,Progressdialog,试图显示ProgressDialog,但得到: 无法在未调用Looper.prepare()的线程内创建处理程序 这是我的密码: public class SocketThread implements Runnable { BufferedReader in; private ProgressDialog dialog; public void run() { socket = null; while (true)

试图显示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();

                    }
                });

有可能修复吗

您可以使用处理程序并使用
Handler.post(可运行)
或者,如果您有活动上下文,您可以使用
activity.rununuithread(可运行操作)
您可以使用处理程序并使用
Handler.post(可运行)
或者,如果您有活动上下文,您可以使用
activity.rununuithread(可运行操作)

永远不要从与UI线程不同的线程执行UI更新


一个解决方案是在创建线程时在处理程序上添加一个引用,以便可以在UI线程中发送更新通知。

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


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

我不知道“Activity.runOnUiThread(…)”方法。很高兴现在意识到这一点。也许我不理解你,但我的代码与你建议的相同:AdvancedMultipleSeriesGraph.this.runOnUiThread(…)你能试试Handler mHandler=new Handler()吗;而不是runOnUiThread mHandler.post(new Runnable()public void run(){dialog.show();}});或者可能是因为您没有从UI线程创建ProgressDialog谢谢您的帮助!通过将“newprogressdialog(getBaseContext());”更改为“newprogressdialog(this)”;“我不知道”Activity.runOnUiThread(…)”方法来解决。很高兴现在意识到这一点。也许我不理解你,但我的代码与你建议的相同:AdvancedMultipleSeriesGraph.this.runOnUiThread(…)你能试试Handler mHandler=new Handler()吗;而不是runOnUiThread mHandler.post(new Runnable()public void run(){dialog.show();}});或者可能是因为您没有从UI线程创建ProgressDialog谢谢您的帮助!通过将“new ProgressDialog(getBaseContext());”更改为“new ProgressDialog(this)”,可以解决此问题