我有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 时,它不起作用。
我怎样才能实现这个目标?
答案 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;
}