API 26(修订版26.0.2)下KeyEventCompat无法找到的解决办法咨询
解决API 26下KeyEventCompat找不到的问题
这个问题我之前也碰到过,其实是因为从API 26开始,KeyEventCompat里的核心方法已经被直接整合到KeyEvent类本身了,而且旧的support v4/v7库在高API级别下的兼容性支持也逐渐被AndroidX取代了。给你几个具体的解决步骤:
直接替换API调用(最快解决)
不需要再依赖KeyEventCompat,把原来的兼容类方法直接换成KeyEvent的静态方法即可:KeyEventCompat.hasNoModifiers(event)→KeyEvent.hasNoModifiers(event)KeyEventCompat.hasModifiers(event, modifiers)→KeyEvent.hasModifiers(event, modifiers)
迁移到AndroidX(推荐长期方案)
旧的support库已经停止维护,建议把项目迁移到AndroidX:- 在项目根目录的
gradle.properties文件中添加以下配置:android.useAndroidX=true android.enableJetifier=true - 把所有
android.support.*的导入替换成对应的androidx.*包(不过对于这个问题,替换完API调用后其实已经不需要KeyEventCompat相关的导入了)
- 在项目根目录的
修改后的代码示例
你原来的代码可以改成这样:case KeyEvent.KEYCODE_TAB: if (KeyEvent.hasNoModifiers(event)) { handled = arrowScroll(FOCUS_FORWARD); } else if (KeyEvent.hasModifiers(event, KeyEvent.META_SHIFT_ON)) { handled = arrowScroll(FOCUS_BACKWARD); } // 后续逻辑...
内容的提问来源于stack exchange,提问作者Seb




