ProgressDialog尽管被取消和隐藏,但仍会继续显示



现在我正在模拟一个事件的ProgressDialog的显示,该事件预计需要几秒钟的时间。

我是这样做的:

progressDialog = new ProgressDialog(getContext());
progressDialog.setMessage(getString(R.string.calendar_load));
progressDialog.setCancelable(false);
progressDialog.show();
Thread t=new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
getActivity().runOnUiThread(new Runnable()
{
@Override
public void run() {
progressDialog.cancel();
progressDialog.hide();

但是,尽管我在调试中检查过progressDialog.cancel((和progressDDialog.hide((执行对话框,但它们仍然以不确定的方式继续显示。

是什么导致了这种行为?

问题解决了:感谢所有回答/评论的人,它看起来像一个模拟器错误(事实上,它在模拟器上也起过一些作用(。

调用progressDialog.dismiss();

你能试试这个片段吗?

progressDialog.show();
new Thread(new Runnable() {
@Override
public void run() {
try {
while (progressDialog.getProgress() <= progressDialog.getMax()) {
Thread.sleep(100);
handle.sendMessage(handle.obtainMessage());
if (progressDialog.getProgress() == progressDialog.getMax()) {
progressDialog.dismiss();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
Handler handle = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
progressDialog.incrementProgressBy(1);
}
};

相关内容

最新更新