我收到以下堆棧跟蹤Android Studio中(v.2.2.3):java.lang.NoSuchMethodError:否isCtrlPressed靜態方法(Landroid /視圖/ KeyEvent的)
E/InputEventSender: Exception dispatching finished signal.
E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
E/MessageQueue-JNI: java.lang.NoSuchMethodError: No static method isCtrlPressed(Landroid/view/KeyEvent;)Z in class Landroid/support/v4/view/KeyEventCompat; or its super classes (declaration of 'android.support.v4.view.KeyEventCompat' appears in /data/app/com.app.name-2/base.apk) at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:526)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:319)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2276)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4020)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3982)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3544)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3597)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3563)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3680)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3571)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3737)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3544)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3597) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3563)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3571)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3544)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3597)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3563)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3713)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3874)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2208)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1849)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1840)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2185)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:143)
at android.os.Looper.loop(Looper.java:122)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
的android.support。 v4.view包有一個KeyEventCompat類,它有一個文檔化的布爾成員變量isCtrlPressed。
由於我的應用程序的視圖覆蓋AppCompatActivity,dispatchKeyEvent()函數靜態調用KeyEventCompat.isCtrlPressed(),但該函數不存在。
我有以下gradle這個設置:
compileSdkVersion = 25
buildToolsVersion = "25.0.2"
supportLibVersion = "25.2.0"
minSdkVersion 14
targetSdkVersion = 25
用下面的依賴關係:
compile "com.android.support:appcompat-v7:25.2.0"
compile "com.android.support:support-compat:25.2.0"
compile "com.android.support:support-media-compat:25.2.0"
compile "com.android.support:gridlayout-v7:25.2.0"
compile "com.android.support:support-core-utils:${rootProject.ext.supportLibVersion}"
compile "com.android.support:support-core-ui:${rootProject.ext.supportLibVersion}"
compile "com.android.support:design:${rootProject.ext.supportLibVersion}"
compile "com.android.support:recyclerview-v7:${rootProject.ext.supportLibVersion}"
compile 'com.android.support:support-v4:25.2.0'
這是一個Android的bug?如果是這樣,那麼建議的工作是什麼?也許嘗試編譯使用較低版本的構建工具&支持庫?
將您的代碼發佈到您使用該方法的地方 – arjun
看起來像是在靜態方法中調用** isCtrlPressed()**方法。如果您將** isCtrlPressed()**方法聲明爲** static **,則可以解決此問題,例如:'public static boolean isCtrlPressed(...){...}'。 – DevilsHnd