繁体   English   中英

关闭进度对话框

[英]dismissing Progress Dialog

我有一种情况,我正在加载一堆图像。 在此过程中,我试图显示一个进度对话框,直到图像完全加载。 我已经overridedonBackPressed()方法,这样当用户按下后退按钮时,活动将完成。

但是,如果我在显示进度对话框时按下后退按钮,则不会调用后退键事件。 所以我尝试提供progressDialog.setCancelable(true) 所以现在这允许我关闭进度对话框,但无论如何都不会调用我的后键事件,因此我的活动会在后台加载图像。

那么,当用户按下后退键时,如何使progressDialog和活动都停止。

使用Dialog.setOnCancelListener取消您的后台任务

好的。 我终于找到了解决办法。

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.
        }
    });

在不同的线程中加载您的图像。 当用户表示他们想要取消加载时,设置一个在加载线程的处理循环中检查的标志。 您还可以调用加载线程的 interrupt() 方法来处理线程卡在 wait() 或 sleep() 之类的情况。

使用 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;
}

您可以粘贴代码以获得正确答案吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM