Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error inflating class com.google.android.material.tabs.TabLayout

I am trying to implement Tab Layout but unfortunately getting this error ,

i have added my xml code ,can anyone help figuring out what i am doing incorrectly.

the following is the error log i get

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.vvdntech.design_material/com.example.vvdntech.design_material.LoggedIn}: android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class com.google.android.material.tabs.TabLayout
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2667)
    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1494)
    at android.os.Handler.dispatchMessage(Handler.java:111)
    at android.os.Looper.loop(Looper.java:207)
    at android.app.ActivityThread.main(ActivityThread.java:5776)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
 Caused by: android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class com.google.android.material.tabs.TabLayout
    at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
    at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:467)
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
    at com.example.vvdntech.design_material.LoggedIn.onCreate(LoggedIn.java:17)
    at android.app.Activity.performCreate(Activity.java:6582)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2532)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2667) 
    at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1494) 
    at android.os.Handler.dispatchMessage(Handler.java:111) 
    at android.os.Looper.loop(Looper.java:207) 
    at android.app.ActivityThread.main(ActivityThread.java:5776) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
 Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class com.google.android.material.tabs.TabLayout
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
    at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:467) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
    at com.example.vvdntech.design_material.LoggedIn.onCreate(LoggedIn.java:17) 
    at android.app.Activity.performCreate(Activity.java:6582) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 
 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.material.tabs.TabLayout" on path: DexPathList[[zip file "/data/app/com.example.vvdntech.design_material-1/base.apk", zip file "/data/app/com.example.vvdntech.design_material-1/split_lib_dependencies_apk.apk", 

This is the xml file i have

<RelativeLayout
    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"
    tools:context=".LoggedIn">


    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/pager">

        <com.google.android.material.tabs.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <com.google.android.material.tabs.TabItem
                android:icon="@drawable/b"
                android:text="tab1" />
            <com.google.android.material.tabs.TabItem
                android:icon="@drawable/b"
                android:text="tab2"/>
            <com.google.android.material.tabs.TabItem
                android:icon="@drawable/b"
                android:text="tab3"/>

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

    </android.support.v4.view.ViewPager>

</RelativeLayout>

Main Activity i haven't added anything yet. this is totally practice , so if any small mistakes in code , do tell.

EDIT : i am also attaching my gradle file

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.vvdntech.design_material"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    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 'com.android.support:design:28.0.0-alpha3'
}

& https://material.io/develop/android/components/tab-layout/ i am using this link where the tab is inside view pager.

thnx in advance

like image 602
Anjani Mittal Avatar asked Jul 06 '18 07:07

Anjani Mittal


4 Answers

The source of the error is that com.google.android.material.tabs.TabLayout does not come from the support libraries but rather from the material design library as @Doflaminhgo pointed out.

dependencies {
    // ...
    implementation 'com.google.android.material:material:1.0.0'
    // ...
}

Reference https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md

I am not sure why the Android reference documentation describes use of Material Components without apparently mentioning where to find it anywhere in the section.

like image 184
user650881 Avatar answered Dec 10 '22 10:12

user650881


this is a bit late, but for anyone who might be looking into this for the future:

the package you need to use is not com.google.android.material.tabs (although it is the one used in the material design website), but it is android.support.design.widget instead (both for TabLayout and TabItem). here is an example usage:

<android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TabItem
            android:icon="@android:drawable/ic_menu_help"
            android:text="Active"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"/>
        <android.support.design.widget.TabItem
            android:icon="@android:drawable/ic_menu_help"
            android:text="History"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"/>
        <android.support.design.widget.TabItem
            android:icon="@android:drawable/ic_menu_help"
            android:text="Ignored"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"/>

    </android.support.design.widget.TabLayout>
like image 21
Doflaminhgo Avatar answered Dec 10 '22 11:12

Doflaminhgo


It could be that it's looking for values which don't exist in your current app theme. Therefore, make sure your app theme starts with Theme.MaterialComponents instead of Theme.AppCompat.

like image 36
Cristan Avatar answered Dec 10 '22 10:12

Cristan


As pointed here and here, your app should use a theme that inherits Theme.MaterialComponents themes or should have desired attributes.

like image 29
momt99 Avatar answered Dec 10 '22 11:12

momt99