如果我在Activity中的AlertDialog上按ESCAPE按钮,我希望Activity完成

时间:2012-02-11 10:45:28

标签: android android-alertdialog

我有3项活动 A,B& ç

我在列表中的活动 A 中展示了一些视频链接。如果用户点击某个项目,我会加载活动 B ,其中我会对用户的数据进行一些验证,例如要求他在 AlertDialog 中提供他的登录信息。我在此对话框中显示两个按钮登录& 取消即可。如果用户按下登录,我会验证他的信息并打开活动 C ,我会播放他选择的视频。但如果用户按取消,我完成()活动 B 以加载活动 A

如果用户仅通过burrons进行交互,则此方法正常。

但问题是,当 AlertDialog 打开时,当我按下键盘/ D-Pad上的 ESCAPE 按钮时。对话框消失但活动 B 完成()。我已覆盖活动 B onKeyDown ,其中我执行以下操作。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK
            || keyCode == KeyEvent.KEYCODE_ESCAPE) {
        Log.d(TAG, "onKeyDown : calling finish() manually");
        finish();
        return true;
    } else
        return false;
}

但是当我在打开的 AlertDialog 上按 ESCAPE 时,它不起作用。

我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:1)

捕获AlertDialog的setOnKeyListener事件,并将以下代码粘贴到其中。它还将关闭BACK按钮上的活动:

 @Override

    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) 
    {
        if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE)                                 
        {           
            yourActivity.finish();
            return true;
        } 
        return false;
    }
相关问题