Android setContentView上的ViewCompat$OnUnhandledKeyEventListener

Android setContentView上的ViewCompat$OnUnhandledKeyEventListener,android,Android,该错误由以下命令触发: setContentView(R.layout.activity_item_list); 这段代码是由android studio在使用“主/从流”创建新的android项目时生成的 布局似乎已渲染,但仍会出现错误 I/zygote: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.view.ViewCompat$OnUnhandledKeyEventL

该错误由以下命令触发:

setContentView(R.layout.activity_item_list);
这段代码是由android studio在使用“主/从流”创建新的android项目时生成的

布局似乎已渲染,但仍会出现错误

I/zygote: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
        at void android.support.v4.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, android.support.v4.view.OnApplyWindowInsetsListener) (ViewCompat.java:2203)
        at android.view.ViewGroup android.support.v7.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:637)
        at void android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518)
        at void android.support.v7.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466)
        at void android.support.v7.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140)
        at void com.junkradar.junkradar.ItemListActivity.onCreate(android.os.Bundle) (ItemListActivity.java:52)
        at void android.app.Activity.performCreate(android.os.Bundle, android.os.PersistableBundle) (Activity.java:7009)
        at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:7000)
        at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1214)
        at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2731)
        at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2856)
        at void android.app.ActivityThread.-wrap11(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
        at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1589)
        at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
        at void android.os.Looper.loop() (Looper.java:164)
        at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6494)
        at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
        at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:438)
        at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:807)
    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file "/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/base.apk", zip file "/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib_dependencies_apk.apk", zip file "/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib_resources_apk.apk", zip file "/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib_slice_0_apk.apk", zip file "/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib_slice_1_apk.apk", zip file "/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib_slice_2_apk.apk", zip file "/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib_slice_3_apk.apk", zip file "/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib_slice_4_apk.apk", zip file "/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib_slice_5_apk.apk", zip file "/data/app/com.jun
        at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:125)
        at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
        at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
        at void android.support.v4.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, android.support.v4.view.OnApplyWindowInsetsListener) (ViewCompat.java:2203)
        at android.view.ViewGroup .....
I/zygate:拒绝对以前失败的类java.lang.class:java.lang.NoClassDefFoundError:解析失败:Landroid/view/view$OnUnhandledKeyEventListener;
在void android.support.v4.view.ViewCompat.setonapplyWindowInsertsListener(android.view.view,android.support.v4.view.onapplyWindowInsertsListener)(ViewCompat.java:2203)
在android.view.ViewGroup android.support.v7.app.AppCompateDelegateImpl.createSubDecor()上(AppCompateDelegateImpl.java:637)
在void android.support.v7.app.AppCompateDelegateImpl.ensureSubDecor()上(AppCompateDelegateImpl.java:518)
在void android.support.v7.app.AppCompateDelegateImpl.setContentView(int)(AppCompateDelegateImpl.java:466)中
位于void android.support.v7.app.AppCompatActivity.setContentView(int)(AppCompatActivity.java:140)
位于void com.junkradar.junkradar.ItemListActivity.onCreate(android.os.Bundle)(ItemListActivity.java:52)
在void android.app.Activity.performCreate(android.os.Bundle、android.os.PersistableBundle)(Activity.java:7009)中
位于void android.app.Activity.performCreate(android.os.Bundle)(Activity.java:7000)
位于void android.app.Instrumentation.callActivityOnCreate(android.app.Activity,android.os.Bundle)(Instrumentation.java:1214)
在android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord,android.content.Intent)(ActivityThread.java:2731)
在void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord,android.content.Intent,java.lang.String)(ActivityThread.java:2856)
在void android.app.ActivityThread.-wrap11(android.app.ActivityThread,android.app.ActivityThread$ActivityClientRecord,android.content.Intent,java.lang.String)(ActivityThread.java:-1)
在void android.app.ActivityThread$H.handleMessage(android.os.Message)(ActivityThread.java:1589)中
在void android.os.Handler.dispatchMessage(android.os.Message)(Handler.java:106)中
位于void android.os.Looper.loop()(Looper.java:164)
在void android.app.ActivityThread.main(java.lang.String[])(ActivityThread.java:6494)中
位于java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object,java.lang.Object[])(Method.java:-2)
位于void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run()(RuntimeInit.java:438)
位于void com.android.internal.os.ZygoteInit.main(java.lang.String[])(ZygoteInit.java:807)
原因:java.lang.ClassNotFoundException:在路径:DexPathList[[zip文件”/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/base.apk]上未找到类“android.view.view$OnUnhandledKeyEventListener”,zip文件“/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_libu dependencies\u apk”,zip文件“/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib_resources_apk.apk”,zip文件“/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib slice_slice_0_apk”,zip文件“/data/app/com.junkradar.junkradar.junkradar.junkradar-g7tqmgfv3i4lrtge5e=/split lib_slice.apk”/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib slice_2_apk.apk”,zip文件“/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib slice_slice_3_apk”,zip文件“/data/app/com.junkradar.junkradar.junkradar.junkradar-g7tqmgfv3i4lrtx3e5e=/split lib apk文件”/data/app/com.junkradar.junkradar-g7TqmgFV3I4lrTx3ge5E_g==/split_lib_slice_5_apk.apk”,zip文件“/data/app/com.jun
位于java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String)(BaseDexClassLoader.java:125)
位于java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String,布尔)(ClassLoader.java:379)
位于java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String)(ClassLoader.java:312)
在void android.support.v4.view.ViewCompat.setonapplyWindowInsertsListener(android.view.view,android.support.v4.view.onapplyWindowInsertsListener)(ViewCompat.java:2203)
在android.view.ViewGroup。。。。。
activity_item_list.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".ItemListActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <FrameLayout
        android:id="@+id/frameLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <include layout="@layout/item_list" />
    </FrameLayout>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>

如前所述,代码由Android Studio 3.2.1自动生成,并选择“主/细节流”类型的活动

  • 我偶然发现了一个github代码片段,它实现了这一点
  • 您应该将以下内容粘贴到项目的-build.gradle的底部

    // This is to fix the errors : java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
    configurations.all {
        resolutionStrategy.eachDependency { details ->
            def requested = details.requested
            if (requested.group == "com.android.support") {
                if (!requested.name.startsWith("multidex")) {
                    details.useVersion "26.+"
                }
            }
        }
    }
    
  • 我最后在下面的URL中使用了这个建议(而不是1)——

  • 能否显示活动项目列表xml文件?该文件中存在问题maybe@JawadMalik我怀疑这个文件有问题。它是由Android Studio自动生成的。我附加了代码。它引用了一个“include layout=“@layout/item_list”无法粘贴,但该文件是非常基本的recyclerView,指向另一个Card_视图。所有这些都是android Studio的“主/细节流”模板的一部分。看起来像这样,但有时会出现一个问题,而android Studio也没有notify@Dror你解决问题了吗???@Bobert尝试bullet 2代替Androidx替换androidx的“com.android.support”“@Bobert阅读了答案。在评论中,它说只是为了删除
    DependencyResolveDetails
    因为不需要类型声明。这对我有用。@Dror这些行是做什么的?我很害怕在不理解的情况下写这篇文章。@JarsOfJam Scheduler强制您所有的Dependency使用相同的支持库版本