web-dev-qa-db-fra.com

Erreur lors du gonflement de la classe com.google.Android.material.tabs.TabLayout

J'essaie d'implémenter la disposition des onglets, mais j'obtiens malheureusement cette erreur,

j'ai ajouté mon code xml, quelqu'un peut-il m'aider à comprendre ce que je fais mal.

ce qui suit est le journal des erreurs que je reçois

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", 

Ceci est le fichier xml que j'ai

<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>

Activité principale je n'ai encore rien ajouté. c'est totalement pratique, donc s'il y a de petites erreurs de code, dites-le.

EDIT: je joins également mon fichier de notes

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/ j'utilise ce lien où l'onglet est à l'intérieur du pager de vue.

merci d'avance

6
Anjani Mittal

La source de l'erreur est que com.google.Android.material.tabs.TabLayout ne provient pas des bibliothèques de support mais plutôt de la bibliothèque de conception de matériaux comme l'a souligné @Doflaminhgo.

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

Référence https://github.com/material-components/material-components-Android/blob/master/docs/getting-started.md

Je ne sais pas pourquoi le Android documentation de référence décrit l'utilisation des composants matériels sans mentionner apparemment où le trouver n'importe où dans la section.

5
user650881

c'est un peu tard, mais pour tous ceux qui pourraient envisager cela pour l'avenir:

le package que vous devez utiliser est pas com.google.Android.material.tabs (bien que ce soit celui utilisé sur le site Web de conception de matériaux), mais c'est Android.support.design .widget à la place (pour TabLayout et TabItem). voici un exemple d'utilisation:

<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>
3
Doflaminhgo

Il se peut qu'il recherche des valeurs qui n'existent pas dans le thème de votre application actuelle. Par conséquent, assurez-vous que le thème de votre application commence par Theme.MaterialComponents au lieu de Theme.AppCompat.

2
Cristan

Comme indiqué ici et ici , votre application doit utiliser un thème qui hérite de Theme.MaterialComponents thèmes ou devrait avoir les attributs souhaités.

1
Mohammad Omidvar

Que la version de votre fichier xml soit limitée ...

enter image description here

voir aussi ceci Lien

0
code4rox

Parcourez vos bibliothèques de support dans le fichier gradle, toutes les bibliothèques de support doivent avoir la même version, probablement des versions mixtes.

0
Sahil