首页 > 解决方案 > 错误:在片段中膨胀 TabLayout 时出现 java.lang.ClassNotFoundException

问题描述

每当 Android 尝试在我的片段中膨胀 TabLayout 时,我都会收到错误:java.lang.ClassNotFoundException。我正在使用 Kotlin,不确定这是否重要。

我的片段布局

<LinearLayout android:layout_height="match_parent"
          android:layout_width="match_parent"
          android:orientation="vertical"
          xmlns:android="http://schemas.android.com/apk/res/android">

<!-- our tablayout to display tabs  -->
<android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

<!-- View pager to swipe views -->
<android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"/>

我的 Gradle 依赖项

def room_version = "2.1.0-alpha04"

implementation "androidx.room:room-runtime:$room_version"
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
annotationProcessor "androidx.room:room-compiler:$room_version"
// For Kotlin use kapt instead of annotationProcessor

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0-alpha02'
implementation 'androidx.core:core-ktx:1.1.0-alpha04'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0-alpha02'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.2-alpha01'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.2-alpha01'
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.android.support:support-compat:28.0.0'
implementation 'com.android.support:design:28.0.0'

我收到了这个错误

2019-03-07 10:05:12.020 29278-29278/com.nandrezholdingslimited.pebblar E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.nandrezholdingslimited.pebblar, PID: 29278
android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class android.support.design.widget.TabLayout
Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class android.support.design.widget.TabLayout
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.widget.TabLayout" on path: DexPathList[[zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/base.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_dependencies_apk.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_resources_apk.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_slice_0_apk.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_slice_1_apk.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_slice_2_apk.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_slice_3_apk.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_slice_4_apk.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_slice_5_apk.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_slice_6_apk.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_slice_7_apk.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_slice_8_apk.apk", zip file "/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.nandrezholdingslimited.pebblar-ZCiGV8uuN3ooM7_JoASOUg==/lib/arm64, /system/lib64, /system/vendor/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at android.view.LayoutInflater.createView(LayoutInflater.java:606)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    at com.nandrezholdingslimited.pebblar.features.tripslist.TripsListFragment.onCreateView(TripsListFragment.kt:30)

我从各种 stackoverflow 帖子中读到这可能是因为库版本不兼容问题,但我尝试了许多不同的版本,每当 Android 尝试将 TabLayout 膨胀到 Fragment 时,我仍然会遇到这个崩溃。

请帮我解决这个问题。

谢谢你!

标签: androidandroid-layoutandroid-tablayout

解决方案


好的,我知道问题出在哪里。

如果我在创建新项目时选择“使用 AndroidX 工件”,那么我将不得不使用

implementation 'com.google.android.material:material:1.1.0-alpha04'

com.google.android.material.tabs.TabLayout

如果我使用

implementation 'com.android.support:design:28.0.0'

android.support.design.widget.TabLayout

该应用程序将在膨胀 TabLayout 期间崩溃。

而如果我没有选择“使用 AndroidX 工件”,我可以'com.android.support:design:28.0.0'毫无问题地使用。


推荐阅读