web-dev-qa-db-ja.com

KeyEventCompatはビルドでサポートされていません

私のプロジェクトは現在使用していますが、APIレベル26-リビジョン26.0.2に移行したようです。シンボルKeyEventCompatを見つけるのに苦労しています。

import Android.support.v4.view.KeyEventCompat;

v7を使用して理解しようとしましたが、機能していません。動作させる方法についてのアイデア。

使用例:

case KeyEvent.KEYCODE_TAB:
    if (KeyEventCompat.hasNoModifiers(event)) {
        handled = arrowScroll(FOCUS_FORWARD);
    } else if (KeyEventCompat.hasModifiers(event, KeyEvent.META_SHIFT_ON)) {
        handled = arrowScroll(FOCUS_BACKWARD);
    }
    break;

動作させる方法についてのアイデア。

ありがとう

23
Seb

これを変える

if (KeyEventCompat.hasNoModifiers(event)) {
    handled = arrowScroll(FOCUS_FORWARD);
} else if (KeyEventCompat.hasModifiers(event, KeyEvent.META_SHIFT_ON)) {
    handled = arrowScroll(FOCUS_BACKWARD);
}

if (event.hasNoModifiers()) {
    handled = arrowScroll(FOCUS_FORWARD);
} else if (event.hasModifiers(KeyEvent.META_SHIFT_ON)) {
    handled = arrowScroll(FOCUS_BACKWARD);
}

KeyEventCompat クラスはAPIレベル26.0.0で廃止されました

59
Madhur

このKeyEventCompatの問題は、アプリのビルドグラドルにこの行を追加することで解決しました(依存関係の上)

configurations.all {
    exclude group: 'com.google.code.gson'

    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.Android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '26.0.2'
            }
        }
    }
}
0
itzo

API 19+をサポートしているため、KeyEventCompat呼び出しをKeyEvent呼び出しに変更します。そのAPIレベルで同等の機能を取得できるはずです。

0
Chris Stillwell