【问题标题】:dismissing Progress Dialog关闭进度对话框
【发布时间】:2011-06-06 09:31:33
【问题描述】:
我有一种情况,我正在加载一堆图像。在此过程中,我试图显示一个进度对话框,直到图像完全加载。我有overrided onBackPressed() 方法,这样当用户按下后退按钮时,活动将完成。
但是如果我在显示进度对话框时按下后退按钮,则不会调用后退键事件。所以我尝试提供progressDialog.setCancelable(true)。所以现在这允许我关闭进度对话框,但我的后键事件并没有被调用,所以我的活动在后台加载图像。
那么当用户按下返回键时,我如何让progressDialog 和活动都停止。
【问题讨论】:
标签:
android
progressdialog
background-process
【解决方案2】:
好的。我终于找到了解决办法。
progressDialog.setCancelable(true);
progressDialog.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
Log.i("inside on cancel","Cancel Called");
finish(); //If you want to finish the activity.
}
});
【解决方案3】:
在不同的线程中加载您的图像。当用户表示他们想要取消加载时,设置一个在加载线程的处理循环中检查的标志。你也可以调用加载线程的interrupt()方法来处理线程卡在wait()或者sleep()之类的情况。
【解决方案4】:
使用 onKeyDown() 方法,但是您必须检查对话框是否正在显示,按下的按钮是否是“返回”按钮,您还应该调用 super.onKeyDown() 以确保默认方法也会被执行。
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK && progressDialog.isShowing())
{
// DO WHATEVER YOU WANT
}
// Call super code so we dont limit default interaction
super.onKeyDown(keyCode, event);
return true;
}
你能贴出正确答案的代码吗?