【问题标题】:My app stopped when adding a RecyclerView Layoutmanager添加 RecyclerView Layoutmanager 时我的应用停止了
【发布时间】:2019-06-08 10:08:52
【问题描述】:

我正在为 Firebase 实时数据库设置应用。为此,我想以垂直布局给出数据。问题是当我添加 LinearLayoutManager 时应用程序停止了。

这是我遵循的教程:https://www.youtube.com/watch?v=71H9-MRXYOE

我已经尝试以不同的方式添加 LinearLayoutManager,但它们都不起作用

public class MainActivity extends AppCompatActivity {

    RecyclerView recyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recycler_view);
        recyclerView.setLayoutManager(new LinearLayoutManager(this, 
              RecyclerView.VERTICAL, false));

        recyclerView.setAdapter(adapter);

    }

我对使用 android 编程真的很陌生,对错误代码了解不多。

W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
I/art: Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>: 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:2203)
        at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:637)
I/art:     at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518)
        at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466)
        at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140)
        at void com.example.firebasetest.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:34)
        at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6679)
        at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1118)
        at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2618)
        at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2726)
        at void android.app.ActivityThread.-wrap12(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:1477)
        at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
        at void android.os.Looper.loop() (Looper.java:154)
        at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6119)
        at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
        at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:886)
        at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:776)
    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file "/data/app/com.example.firebasetest-2/base.apk", zip file "/data/app/com.example.firebasetest-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.example.firebasetest-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.example.firebasetest-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.example.firebasetest-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.example.firebasetest-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.example.firebasetest-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.example.firebasetest-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.example.firebasetest-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.example.firebasetest-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.example.firebasetest-2/split_lib_slice_8_apk.apk", zip file "/data/app/com.example.firebasetest-2/split_lib_slice_9_apk.apk"],na
        at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
        at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
        at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
        at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener) (ViewCompat.java:2203)
        at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:637)
        at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518)
        at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466)
        at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140)
        at void com.example.firebasetest.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:34)
        at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6679)
        at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1118)
        at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2618)
        at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2726)
        at void android.app.ActivityThread.-wrap12(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:1477)
        at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
        at void android.os.Looper.loop() (Looper.java:154)
        at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6119)
        at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
        at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:886)
        at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:776)
I/ViewConfigCompat: Could not find method getScaledScrollFactor() on ViewConfiguration

这是我的布局

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/edt_title"
        android:hint="Title"
        android:inputType="text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <EditText
        android:id="@+id/edt_content"
        android:hint="Content"
        android:inputType="text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <Button
        android:id="@+id/btn_post"
        android:text="POST"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></androidx.recyclerview.widget.RecyclerView>

</LinearLayout>```

【问题讨论】:

  • 请清理项目并重试
  • 你确定这个错误与linearlayoutmanager有关吗?仔细查看您的 logcat。你的错误是这样的: 引起:java.lang.ClassNotFoundException:在路径上找不到类“android.view.View$OnUnhandledKeyEventListener”:DexPathList[[zip file“/data/app/com.example.firebasetest-2/ base.apk", 压缩文件 "/data/app/com.example.firebasetest-2/split_lib_dependencies_apk.apk", 压缩文件 ....
  • 你可以试试这个:recyclerView.setLayoutManager(new LinearLayoutManager(this); -- Recyclerview.Vertical 是默认值。你不需要初始化它。
  • MainActivity 的第 34 行是什么?

标签: java android android-recyclerview classnotfoundexception


【解决方案1】:
  • 这可能会有所帮助

1] 垂直滚动RecyclerView 可以通过以下方式实现:-

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);

2] logcat 中的错误显示如下:-

java.lang.ClassNotFoundException: 找不到类 路径上的“android.view.View$OnUnhandledKeyEventListener”: DexPathList[[zip 文件“/data/app/com.example.firebasetest-2/base.apk”, 压缩文件 "/data/app/com.example.firebasetest-2/split_lib_dependencies_apk.apk", 压缩文件 “/data/app/com.example.firebasetest-2/split_lib_slice_0_apk.apk”,压缩包 文件“/data/app/com.example.firebasetest-2/split_lib_slice_1_apk.apk”, 压缩文件 “/data/app/com.example.firebasetest-2/split_lib_slice_2_apk.apk”,压缩包 文件“/data/app/com.example.firebasetest-2/split_lib_slice_3_apk.apk”, 压缩文件 “/data/app/com.example.firebasetest-2/split_lib_slice_4_apk.apk”,压缩包 文件“/data/app/com.example.firebasetest-2/split_lib_slice_5_apk.apk”, 压缩文件 “/data/app/com.example.firebasetest-2/split_lib_slice_6_apk.apk”,压缩包 文件“/data/app/com.example.firebasetest-2/split_lib_slice_7_apk.apk”, 压缩文件 “/data/app/com.example.firebasetest-2/split_lib_slice_8_apk.apk”,压缩包 文件 "/data/app/com.example.firebasetest-2/split_lib_slice_9_apk.apk"],na

这基本上可以解决(主要关注Fire base相关的依赖)

  • 清理你的项目依赖
  • 如果需要,将任何依赖项更新到最新版本。

最后

3] 清理您的项目,重新构建并运行。

【讨论】:

  • 很遗憾,这并没有解决问题。我更新了所有依赖项并按照您在 1] 中编写的代码编辑了代码]
【解决方案2】:

您的问题不在 LayoutManager 中。问题出现在此错误消息中:

W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable

这已经回答了看看这个链接 https://stackoverflow.com/a/45191408/11555781

【讨论】:

  • 好的,我明白了,但是我应该更改哪些方法名称
  • 请尝试清理项目并重建并重试。如果这不起作用,请检查您的可绘制对象,检查是否有任何 .svg 它们也可能包含此错误。
【解决方案3】:

当我将 Gallery 切换到 RecyclerView 时,我突然出现了这个问题。 我能够通过将以下依赖项添加到我的 build.gradle 文件来解决它:

implementation 'androidx.core:core:1.5.0-alpha01'

【讨论】:

    猜你喜欢
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多