android - 假 KeyEvent 不能*完全*像 "real"按钮一样工作。为什么?

标签 android back-button keyevent onkeydown onpause

我正在尝试使用 KEYCODE_BACK 调用我的主要 Activity 的 onKeyDown(),这样它的行为就像我自己按下“后退”按钮一样。我使用以下代码执行此操作:

   KeyEvent goBackDown = new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK,0,0);
    goBackDown.dispatch(activity);
    SystemClock.sleep(50);  // as if human pressed the key
    KeyEvent goBackUp = new KeyEvent(0,0,KeyEvent.ACTION_UP,KeyEvent.KEYCODE_BACK,0,0);
    goBackUp.dispatch(activity);

我的 Activity 的 onKeyDown() 目前只调用:

return super.onKeyDown(keyCode, event);

然而,与真正的后退按钮不同,当调用“假”代码时, Activity 拒绝变得不可见。

为什么?

最佳答案

使用

dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK));

http://developer.android.com/reference/android/view/View.html#dispatchKeyEvent%28android.view.KeyEvent%29

关于android - 假 KeyEvent 不能*完全*像 "real"按钮一样工作。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5751486/

相关文章:

android - NavigationView 和 Toolbar 被内容覆盖

android - 当上下文操作模式处于 Activity 状态时,如何更改 ListView 中所选图像的颜色?

android - 如何解决 Xamarin Android 中的 SIGSEGV 崩溃问题

android - 控制 Android 上的用户语言

c - sdl 不断按键

windows - 检测键盘或鼠标事件是否由软件触发

android - 当点击后退按钮时,应用程序在一秒钟后崩溃

session - 浏览器后退按钮 - 它会删除 session 数据吗?

ios - 自定义后退按钮出现在 UIImagePickerController 上

未捕获 JavaFX 按键