You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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:

    1. 在项目根目录的gradle.properties文件中添加以下配置:
      android.useAndroidX=true
      android.enableJetifier=true
      
    2. 把所有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

火山引擎 最新活动