我正在开发一个程序,用于搜索用户手机的某个日期,大约需要2-3秒。虽然它是计算我想显示加载屏幕,所以用户知道确实发生了一些事情。但是,当我尝试在计算之前显示加载屏幕时,屏幕上不显示任何内容。
这就是我所拥有的:
ProgressDialog loading= new ProgressDialog(this);
loading.setTitle("Loading");
loading.setMessage("Please wait...");
loading.show();
//search stuff
loading.dismiss();
除此之外,我还尝试将ProgressDialog放在如下的线程中,
new Thread(new Runnable(){
public void run(){
ProgressDialog loading= new ProgressDialog(this);//error here for "this"
loading.setTitle("Loading");
loading.setMessage("Please wait...");
loading.show();
}
});
//search stuff
但由于“this”关键字而失败,我相信因为它指的是一个Activity而不是一个普通的类,但我可能错了......
如何正确显示ProgressDialog?
答案 0 :(得分:1)
尝试以这种方式处理它
mProgressDialog = ProgressDialog.show(this, "Please wait","Long operation starts...", true);
new Thread() {
@Override
public void run() {
//Do long operation stuff here search stuff
try {
// code runs in a thread
runOnUiThread(new Runnable() {
@Override
public void run() {
mProgressDialog.dismiss();
}
});
} catch (final Exception ex) {
}
}
}.start();
答案 1 :(得分:0)
对繁重的任务使用异步任务。将您的进度对话框代码放在onPreExecute方法进度对话框中,解除onPostExecute方法中的代码以及doInBackground方法中所有繁重的任务。
答案 2 :(得分:-1)
尝试使用进度条传递新课程的上下文(这取决于您的主要活动)
NAME_OF_YOUR_CLASS context = new NAME_OF_YOUR_CLASS(getApplicationContext());
并在你的类上调用这样的方法..(这在课堂上)
public Networking(Context c) {
this.context= c;
}
不要忘记将上下文设为字段(私有最终上下文上下文;)
希望这会有所帮助
也是idk,如果这样可行,但尝试扩展AsyncTask并使用方法在那里运行进度条。