android - onKeyPreIme 不调用

标签 android android-layout android-custom-view keypress android-event

我有一个继承 LinearLayout 的自定义 View ,该 View 位于 ViewSwitcher 中。我想返回到上一个按下后退的 View ,所以我在这个 View 中覆盖了 onPreKeyIme 但是当我按下后退时,它似乎没有进入方法,并且 Activity 处理后退。

我错过了什么?

@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK)
        return viewModel.backClicked();
    return super.onKeyPreIme(keyCode, event);
}

我在 if 语句中有一个断点,它永远不会停在那里。

PS,我不允许使用 fragment 。

最佳答案

尝试覆盖 dispatchKeyEvent 方法。做这样的事情:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if(event.getKeyCode() == KeyEvent.KEYCODE_BACK){
       Log.d("Test","Back Pressed");
       return viewModel.backClicked();
    }
    return super.dispatchKeyEvent(event);
}

关于android - onKeyPreIme 不调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32796344/

相关文章:

java - 获取当月日历中的所有日期

Android - 膨胀 TextView 时出错

Android:从顶部开始循环进度条(270°)

android - 如何自定义 AlertDialog.Builder 中单选按钮的样式?

Android apk 通过扩展文件增量更新?

java - Android:将数据发送到另一个 Activity 给出致命异常

android - 在屏幕上居中 LinearLayout,它本身包含布局

java - 将按钮放在 google map API 的右上角

java - Horizo​​ntalScrollView的scrollTo不会滚动到 View 的原始宽度之上

java - 如何为 Room 数据库的 @Entity 的字段编写循环