Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ClassNotFoundException re android.support.v4.view.ViewPager when inflating

I am adding a ViewPager to my app in Android Studio but when I try to run it, it's throwing a ClassNotFoundException re class "android.support.v4.view.ViewPager".

Have done lots of googling and tried changing the dependencies in build.gradle, but nothing has changed the error I'm seeing.

Here are the relevant error lines from Logcat:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.playmusic/com.example.android.playmusic.MainActivity}: android.view.InflateException: Binary XML file line #60: Binary XML file line #60: Error inflating class android.support.v4.view.ViewPager
...
Caused by: android.view.InflateException: Binary XML file line #60: Binary XML file line #60: Error inflating class android.support.v4.view.ViewPager
Caused by: android.view.InflateException: Binary XML file line #60: Error inflating class android.support.v4.view.ViewPager
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.view.ViewPager" on path: DexPathList[[zip file "/data/app/com.example.android.playmusic--Sh7PlYKQR0g2meRQdvXcg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.android.playmusic--Sh7PlYKQR0g2meRQdvXcg==/lib/arm64, /system/lib64, /system/vendor/lib64]]

Here is the main_activity.xml layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/my_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:elevation="4dp"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/main_tabs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        app:tabMode="scrollable">

        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/tab0" />

        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/tab1" />

        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/tab2" />

    </com.google.android.material.tabs.TabLayout>

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

</LinearLayout>

Here are my dependencies in build.gradle. As you can see I have tried using both androidx and com.android.support versions of viewpager artefact:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation "com.android.support:design:28.0.0"
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'com.loopj.android:android-async-http:1.4.9'
    implementation "android.arch.lifecycle:extensions:1.1.0"
    implementation "android.arch.lifecycle:viewmodel:1.1.0"
    //implementation "androidx.viewpager:viewpager:1.0.0"
    implementation "com.android.support:viewpager:28.0.0"
}

Any help would be really welcome :)

like image 419
Andy Avatar asked Feb 11 '19 10:02

Andy


2 Answers

If you are using implementation "androidx.viewpager:viewpager:1.0.0"

Also, change in XML file too

<androidx.viewpager.widget.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"/>
like image 186
Kishore Jethava Avatar answered Nov 18 '22 16:11

Kishore Jethava


For androidX support library for viewpager has been replaced with

androidx.viewpager:viewpager:1.0.0

Replace your dependency with this in your gradle.

You are mixing libraries for androidX and support library, Use either one of them. Update non-androidX dependency with androidX one or replace androidX with support libraries.

like image 20
karan Avatar answered Nov 18 '22 16:11

karan