当弹出进度对话框时,如何处理android上的“后退按钮”

时间:2010-10-08 19:39:55

标签: android

当我的android活动弹出一个进度对话框时,用户点击后退按钮时处理的正确方法是什么?

谢谢。

4 个答案:

答案 0 :(得分:12)

创建一个扩展ProgressDialog的新对话框对象,然后覆盖其中的public void onBackPressed()方法。

答案 1 :(得分:6)

如果你没有运气onCancel()方法,那么你可以在你的活动中写一个onKeyDown()方法来检查进度对话框是否显示以及是否按了后退按钮......或者你可以覆盖onBackPressed()方法(同样,对于活动)并检查对话框是否显示。或者你可以扩展ProgressDialog类并直接从那里覆盖onBackPressed()...在这种情况下你不必检查对话框是否显示。

例如。活动方法:

public void onBackPressed()
{
    if (progressDialog.isShowing())
    {
        // DO SOMETHING
    }
}

onKeyDown()方法类似,但你必须检查对话框是否显示,按下的按钮是否是“后退”按钮,你还应该调用super.onKeyDown()确保默认方法也被执行。

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK && progressDialog.isShowing())
    {
        // DO SOMETHING
    }

    // Call super code so we dont limit default interaction
    super.onKeyDown(keyCode, event);

    return true;
}

使用任一方法,progressDialog变量/属性显然必须在范围内并且可以访问。

答案 2 :(得分:0)

您可以使用静态调用:

public static ProgressDialog show (Context context, CharSequence title, CharSequence message, boolean indeterminate, boolean cancelable, DialogInterface.OnCancelListener cancelListener) 

请务必设置cancelable = true并添加相应的cancelListener回调。

示例:

progressDialog = ProgressDialog.show(this, "Fetching data...", "Loading ...", true, true, this);

答案 3 :(得分:0)

progressbar.setcancellable(false);

它运作完美,我遇到了同样的问题并得到了解决方案。