欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

View$OnUnhandledKeyEventListener怎么整?

程序员文章站 2022-03-11 22:51:55
在运行程序时碰到如下Info级日志,对于一个不能见黄、红、灰代码洁癖的人来说,这样的art日志是不能接受的。Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener...

在运行程序时碰到如下Info级日志,对于一个不能见黄、红、灰代码洁癖的人来说,这样的art日志是不能接受的。

Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener) (ViewCompat.java:2463)
at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:938)
at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:806)

如果运行时设备低于28,则找不到该类,但运行时没有致命错误,程序不会崩溃。出现它的原因是低于 API 28的设备中,Android系统没有View#OnUnhandledKeyEventListener这个接口类,而28及以上引入了这个接口类。

解决的方案
如果实在不想看到警告告示,只能将compileSdkVersion降级到27及以下。
但是这种方案我不喜欢,我就要用高的SDK怎么了,怎么了,来打我呀。

我们先来认识下它

    /**
     * Interface definition for a callback to be invoked when a hardware key event hasn't
     * been handled by the view hierarchy.
     */
    public interface OnUnhandledKeyEventListener {
        /**
         * Called when a hardware key is dispatched to a view after being unhandled during normal
         * {@link KeyEvent} dispatch.
         *
         * @param v The view the key has been dispatched to.
         * @param event The KeyEvent object containing information about the event.
         * @return {@code true} if the listener has consumed the event, {@code false} otherwise.
         */
        boolean onUnhandledKeyEvent(View v, KeyEvent event);
    }

本文地址:https://blog.csdn.net/luo_boke/article/details/107866148