Android 无法从非UI线程显示ProgressDialog。如何?
试图显示ProgressDialog,但得到: 无法在未调用Looper.prepare()的线程内创建处理程序 这是我的密码: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)
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)”,可以解决此问题