java.lang.NoSuchMethodError:没有静态方法调度Unhandled KeyEvent Pre

时间:2018-07-06 19:01:06

标签: android androidx

当迁移到androidx时,按回键时出现错误。

   java.lang.NoSuchMethodError: No static method dispatchUnhandledKeyEventPre(Landroid/view/View;Landroid/view/KeyEvent;)Z in class Landroidx/core/view/ViewCompat; or its super classes (declaration of 'androidx.core.view.ViewCompat' appears in 1/split_lib_dependencies_apk.apk)
    at androidx.appcompat.app.AppCompatDelegateImpl.dispatchKeyEvent(AppCompatDelegateImpl.java:1162)
    at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:2529)
    at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
    at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:329)
    at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4792)
    at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4759)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4082)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4135)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4101)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4109)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4082)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4135)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4101)
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4257)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4109)
    at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4314)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4082)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4135)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4101)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4109)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4082)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4135)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4101)
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4290)
    at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4451)
    at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2434)
    at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1998)
    at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1989)
    at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2411)
    at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
    at android.os.MessageQueue.nativePollOnce(Native Method)
    at android.os.MessageQueue.next(MessageQueue.java:323)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:6351)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:786)

我认为ViewCompat类中没有dispatchUnhandledKeyEventPre方法。我正在使用一些第三方依赖项,所以我不知道是哪种方法引起的

3 个答案:

答案 0 :(得分:4)

检查您使用的是Appcompat库的1.0.0-beta01版本

答案 1 :(得分:3)

对我来说,转到gradle.build文件并确保所有依赖项都是最新的(新版本)可以解决此问题。

答案 2 :(得分:1)

被接受的答案虽然正确,但在不久的将来将发布appcompat的较新版本时,由于答案是特定于特定时间范围的,因此将很快过时。

通常的答案是,当您在项目中使用appcompat(appcompat库)的不同混合版本时,就会发生这种情况,它们之间往往会更加不兼容。每次通过SDK Manager更新某些API时,都必须检查是否正在使用最新版本的appcompat库。如果您使用的是Android Studio,则更新起来非常容易。

转到您的build.gradle (Module: app)并查看相关性。 gradle linter很可能已经向您显示了您正在使用不同版本的appcompat库的错误,以及是否有较新的版本。如果将鼠标悬停在那些突出显示的行上,它将为您提供所需的所有信息,包括您正在使用的版本,最新的可用版本以及所有依赖项是否在同一版本上。按照提示进行操作,修复它们,然后运行gradle sync,您应该会很好。

例如,我使用的是com.android.support:appcompat-v7:28.0.0-alpha3com.android.support:design:28.0.0com.android.support.constraint:constraint-layout:1.1.2的混合版本,而最新版本是v28.0.0v1.1.3

希望这会有所帮助。