2016-10-26 40 views
2

我在執行App時遇到了這種類型的錯誤。java.lang.NoSuchMethodError:沒有靜態方法isCtrlPressed(Landroid/view/KeyEvent;)類Landroid/support/v4/view/KeyEventCompatHoneycomb中的Z;

我的代碼在支持庫24.2.0(Android操作系統在Linux操作系統)中工作,當我在Windows操作系統中運行此代碼時出現了一些錯誤,對於該解決方案,我將支持庫升級到25.0.0,它解決了,但現在下面提到的錯誤生成。

compileSdkVersion = 25 
buildToolsVersion = '25.0.0' 
supportLibraryVersion = '25.0.0' 
targetSdkVersion = 25 

E/UncaughtException: java.lang.NoSuchMethodError: No static method isCtrlPressed(Landroid/view/KeyEvent;)Z in class Landroid/support/v4/view/KeyEventCompatHoneycomb; or its super classes (declaration of 'android.support.v4.view.KeyEventCompatHoneycomb' appears in /data/app/com.xxx/base.apk:classes23.dex) 
at android.support.v4.view.KeyEventCompat$HoneycombKeyEventVersionImpl.isCtrlPressed(KeyEventCompat.java:120) 
at android.support.v4.view.KeyEventCompat.isCtrlPressed(KeyEventCompat.java:197) 
at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:532) 
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:57) 
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:315) 
at com.android.internal.policy.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2310) 
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4127) 
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4089) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642) 
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695) 
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661) 
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787) 
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669) 
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642) 
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695) 
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661) 
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642) 
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5922) 
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5896) 
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5857) 
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3434) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)` 

回答

0

我解決了這個問題。 確保您的buildToolVersion,CompileSdkVersion和targetSdkVersion與您的支持庫匹配。

在下面的配置我有錯誤,

compileSdkVersion = 24 
buildToolsVersion = '24.0.2' 
targetSdkVersion = 24 
supportLibraryVersion = '24.2.0' 

所以,我更新到

compileSdkVersion = 25 
buildToolsVersion = '25.0.0' 
targetSdkVersion = 25 
supportLibraryVersion = '25.0.1' 

而這解決了我的問題。確保它必須與主要發行版本匹配。

+1

必須與主要發行版本相匹配 –

+0

您可以請您擴展您的解決方案,因爲我在Linux上有同樣的問題。你是否建議所有版本必須相同?這可以防止我輸入文本到編輯文本 – Mat

+0

嗨@Mat,我更新了我的答案,所以你現在可以看到。願它幫助你。 –

相關問題