【问题标题】:dismissing Progress Dialog关闭进度对话框
【发布时间】:2011-06-06 09:31:33
【问题描述】:

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

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

那么当用户按下返回键时,我如何让progressDialog 和活动都停止。

【问题讨论】:

    标签: android progressdialog background-process


    【解决方案1】:

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

    【讨论】:

    • 下次请尝试更具体。
    • @MarvinLabs:如何使用它??
    【解决方案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;
        }
        

        你能贴出正确答案的代码吗?

        【讨论】:

        • 你的答案在哪里?你能停止后台服务吗?
        猜你喜欢
        • 1970-01-01
        • 2013-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-08
        相关资源
        最近更新 更多