4

迁移到 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方法。我正在使用一些第三方依赖项,所以我不知道是哪种方法导致它

4

3 回答 3

4

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

于 2018-07-07T09:54:23.667 回答
3

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

于 2018-08-10T05:22:51.660 回答
2

接受的答案虽然是正确的,但在不久的将来会在更新版本的发布时过时,appcompat因为答案是针对特定时间范围的。

一般的答案是,当您在appcompat项目中使用(appcompat 库)的不同混合版本时会发生这种情况,它们往往更频繁地相互不兼容。每次通过 SDK Manager 更新一些 API 时,都必须检查是否使用了最新版本的 appcompat 库。如果您使用的是 Android Studio,更新相当容易。

转到您的build.gradle (Module: app)并查看依赖项。gradle linter 很可能已经向您显示了您正在使用不同版本的 appcompat 库以及是否有更新版本可用的错误。如果您将鼠标悬停在这些突出显示的行上,它将为您提供所需的所有信息,包括您正在使用的版本、可用的最新版本以及所有依赖项是否都在同一版本上。按照提示进行修复,然后运行 ​​agradle 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.

希望这可以帮助。

于 2018-09-22T06:08:31.157 回答