Java 在Android中运行方法时显示加载对话框?
我有一个方法设置,运行大约需要3-5秒(因为它可以在线执行某些操作),我想显示一个加载对话框,但我不知道如何执行,我尝试在调用该方法之前启动加载拨号,然后尝试立即关闭它,如下所示:Java 在Android中运行方法时显示加载对话框?,java,android,dialog,loading,progress,Java,Android,Dialog,Loading,Progress,我有一个方法设置,运行大约需要3-5秒(因为它可以在线执行某些操作),我想显示一个加载对话框,但我不知道如何执行,我尝试在调用该方法之前启动加载拨号,然后尝试立即关闭它,如下所示: dialog.show(); myMethod(); dialog.cancel(); 但这不起作用,有人有什么建议吗?在UI线程上运行长时间任务是“不可能的”。用于在后台运行长时间任务,并在任务完成后更新UI。AsyncTask是我的最爱,但您也可以使用处理程序:) 投入你的时间来度过这美好的时光 下面的代码片段
dialog.show();
myMethod();
dialog.cancel();
但这不起作用,有人有什么建议吗?在UI线程上运行长时间任务是“不可能的”。用于在后台运行长时间任务,并在任务完成后更新UI。AsyncTask是我的最爱,但您也可以使用处理程序:) 投入你的时间来度过这美好的时光 下面的代码片段将帮助您
package org.sample;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
public class Hello extends Activity {
private Handler handler;
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dialog = new ProgressDialog(this);
dialog.setMessage("Please Wait!!");
dialog.setCancelable(false);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.show();
new Thread() {
public void run() {
// Do operation here.
// ...
// ...
// and then mark handler to notify to main thread
// to remove progressbar
//
// handler.sendEmptyMessage(0);
//
// Or if you want to access UI elements here then
//
// runOnUiThread(new Runnable() {
//
// public void run() {
// Now here you can interact
// with ui elemements.
//
// }
// });
}
}.start();
handler = new Handler() {
public void handleMessage(android.os.Message msg) {
dialog.dismiss();
};
};
}
}
我以前尝试过使用它,但我一直得到“只有创建视图层次结构的原始线程才能接触它的视图。”错误。我不知道这意味着什么。。。英雄联盟有什么建议吗?您正在尝试从线程访问UI元素。这就是为什么您会出现此错误。非常感谢!它现在工作得很好:)我最终使用了run()来完成我的方法,就像您以前使用它一样,但随后使用runOnUiThread来更改需要更改的视图!:D