我在使用ProgressDialog车轮旋转方面遇到了问题。这是我的代码:
final ProgressDialog dialog = ProgressDialog.show(this, "", "Loading...", true, false);
Thread thread=new Thread(new Runnable(){
public void run(){
runOnUiThread(new Runnable(){
@Override
public void run() {
if(dialog.isShowing())
// starts a foreground service, does database stuff,
// sets up a spinner with values
dialog.dismiss();
}
});
}
});
thread.start();
一切都按计划进行,我得到了ProgressDialog,后台发生了一些事情,一旦设置,ProgressDialog就消失了 - 唯一的问题是ProgressDialog中的动画没有旋转,几乎让它变得无用。
我做错了什么?
答案 0 :(得分:1)
您在此处省略的代码
// starts a foreground service, does database stuff,
// sets up a spinner with values
必须做一些阻止UI线程的事情。只需将它们放在runOnUiThread()
方法之外。
Thread thread=new Thread(new Runnable(){
public void run(){
// starts a foreground service, does database stuff,
// sets up a spinner with values
runOnUiThread(new Runnable(){
@Override
public void run() {
if(dialog.isShowing())
dialog.dismiss();
}
});
}
});
答案 1 :(得分:0)
使用处理程序android
的ProgressDialog示例 final ProgressDialog dialog = ProgressDialog.show(this, "Title",
"Message", true);
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
dialog.dismiss();
}
};
Thread t = new Thread() {
public void run() {
// write process code here.
handler.sendEmptyMessage(0);
}
};
t.start();
修复问题:ProgressDialog无法正常工作
答案 2 :(得分:0)
因为您将处理对话框放入了错误的区域,例如我的错误: 我有两个活动: MainActivity 和 ShowingActivity ,MainActivity将在新的意图转移到ShowingActivity后显示处理对话框,而ShowingActivity将从服务器获取一些DATA(它将在此处被阻止) 。当我在MainActivity中调用ProcessingDialog时,它显示但不是旋转,因为我的Intent转移到ShowingActivity并阻止Ui,因为从服务器获取DATA的操作必须等待几秒钟。所以我修好了: 1 /在MainActivity调用中:
final Intent working = new Intent(getApplicationContext(),
WorkingActivity.class);
final ProgressDialog ringProgressDialog = ProgressDialog.show(
MainActivity.this, "Please wait ...", "Connecting ...",
true);
ringProgressDialog.setCancelable(false);
new Thread(new Runnable() {
@Override
public void run() {
//Menthod need time to load:
getDatafromServer();
if (BookListFragment.isLoaded) {
ringProgressDialog.dismiss();
startActivity(working);
return;
}
});
所以它不会阻止Ui,因为在获得DATA之后MainActivity仍在运行。 在ShowingActivity中,我将使用此DATA(因为我设置DATA是一个静态字符串)。