web-dev-qa-db-fra.com

Erreur de gonflage de la classe CollapsingToolbarLayout

Mon CollapsingToolbarLayout se bloque en raison d'une erreur de gonflage de classe Android.support.design.widget.CollapsingToolbarLayout.

J'ai mis à jour le studio Android le week-end dernier. Avant la mise à jour, cela fonctionne bien. Après l'avoir mis à jour, il s'est écrasé. Cependant, j'ai essayé de le rétrograder à la version 2.0.0 et cela ne fonctionne plus. Mon collègue n'a aucun problème avec CollapsingToolbarLayout. Je ne suis pas sûr de ce qui s'est passé.

L'erreur était:

Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.Android/com.test.Android.ui.activity.RandomActivity}: Android.view.InflateException: Binary XML file line #22: Error inflating class Android.support.design.widget.CollapsingToolbarLayout
                                                                      at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2325)
                                                                      at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2387)
                                                                      at Android.app.ActivityThread.access$800(ActivityThread.Java:151)
                                                                      at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1303)
                                                                      at Android.os.Handler.dispatchMessage(Handler.Java:102)
                                                                      at Android.os.Looper.loop(Looper.Java:135)
                                                                      at Android.app.ActivityThread.main(ActivityThread.Java:5254)
                                                                      at Java.lang.reflect.Method.invoke(Native Method)
                                                                      at Java.lang.reflect.Method.invoke(Method.Java:372)
                                                                      at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:903)
                                                                      at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:698)
                                                                   Caused by: Android.view.InflateException: Binary XML file line #22: Error inflating class Android.support.design.widget.CollapsingToolbarLayout
                                                                      at Android.view.LayoutInflater.createView(LayoutInflater.Java:633)
                                                                      at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:743)
                                                                      at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:806)
                                                                      at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809)
                                                                      at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809)
                                                                      at Android.view.LayoutInflater.inflate(LayoutInflater.Java:504)
                                                                      at Android.view.LayoutInflater.inflate(LayoutInflater.Java:414)
                                                                      at Android.view.LayoutInflater.inflate(LayoutInflater.Java:365)
                                                                      at Android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.Java:276)
                                                                      at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:136)
                                                                      at com.test.Android.ui.activity.RefreshableActivity.onCreate(RefreshableActivity.Java:31)
                                                                      at Android.app.Activity.performCreate(Activity.Java:5990)
                                                                      at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1106)
                                                                      at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2278)
                                                                      at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2387) 
                                                                      at Android.app.ActivityThread.access$800(ActivityThread.Java:151) 
                                                                      at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1303) 
                                                                      at Android.os.Handler.dispatchMessage(Handler.Java:102) 
                                                                      at Android.os.Looper.loop(Looper.Java:135) 
                                                                      at Android.app.ActivityThread.main(ActivityThread.Java:5254) 
                                                                      at Java.lang.reflect.Method.invoke(Native Method) 
                                                                      at Java.lang.reflect.Method.invoke(Method.Java:372) 
                                                                      at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:903) 
                                                                      at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:698) 
                                                                   Caused by: Java.lang.reflect.InvocationTargetException
                                                                      at Java.lang.reflect.Constructor.newInstance(Native Method)
                                                                      at Java.lang.reflect.Constructor.newInstance(Constructor.Java:288)
                                                                      at Android.view.LayoutInflater.createView(LayoutInflater.Java:607)
                                                                      at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:743) 
                                                                      at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:806) 
                                                                      at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809) 
                                                                      at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809) 
                                                                      at Android.view.LayoutInflater.inflate(LayoutInflater.Java:504) 
                                                                      at Android.view.LayoutInflater.inflate(LayoutInflater.Java:414) 
                                                                      at Android.view.LayoutInflater.inflate(LayoutInflater.Java:365) 
                                                                      at Android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.Java:276) 
                                                                      at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:136) 
                                                                      at com.test.Android.ui.activity.RefreshableActivity.onCreate(RefreshableActivity.Java:31) 
                                                                      at Android.app.Activity.performCreate(Activity.Java:5990) 
                                                                      at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1106) 
                                                                      at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2278) 
                                                                      at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2387) 
                                                                      at Android.app.ActivityThread.access$800(ActivityThread.Java:151) 
                                                                      at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1303) 
                                                                      at Android.os.Handler.dispatchMessage(Handler.Java:102) 
                                                                      at Android.os.Looper.loop(Looper.Java:135) 
                                                                      at Android.app.ActivityThread.main(ActivityThread.Java:5254) 
                                                                      at Java.lang.reflect.Method.invoke(Native Method) 
                                                                      at Java.lang.reflect.Method.invoke(Method.Java:372) 
                                                                      at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:903) 
                                                                      at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:698) 
                                                                   Caused by: Java.lang.NoSuchMethodError: No static method setLayoutDirection(Landroid/graphics/drawable/Drawable;I)V in class Landroid/support/v4/graphics/drawable/DrawableCompat; or its super classes (declaration of 'Android.support.v4.graphics.drawable.DrawableCompat' appears in /data/app/com.test.Android-1/base.apk)
                                                                      at Android.support.design.widget.CollapsingToolbarLayout.setStatusBarScrim(CollapsingToolbarLayout.Java:663)
                                                                      at Android.support.design.widget.CollapsingToolbarLayout.<init>(CollapsingToolbarLayout.Java:197)
                                                                      at Android.support.design.widget.CollapsingToolbarLayout.<init>(CollapsingToolbarLayout.Java:132)
                                                                      at Java.lang.reflect.Constructor.newInstance(Native Method) 
                                                                      at Java.lang.reflect.Constructor.newInstance(Constructor.Java:288) 
                                                                      at Android.view.LayoutInflater.createView(LayoutInflater.Java:607) 
                                                                      at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:743) 
                                                                      at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:806) 
                                                                      at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809) 
                                                                      at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:809) 
                                                                      at Android.view.LayoutInflater.inflate(LayoutInflater.Java:504) 
                                                                      at Android.view.LayoutInflater.inflate(LayoutInflater.Java:414) 
                                                                      at Android.view.LayoutInflater.inflate(LayoutInflater.Java:365) 
                                                                      at Android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.Java:276) 
                                                                      at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:136) 
                                                                      at com.test.Android.ui.activity.RefreshableActivity.onCreate(RefreshableActivity.Java:31) 
                                                                      at Android.app.Activity.performCreate(Activity.Java:5990) 
                                                                      at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1106) 
                                                                      at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2278) 
                                                                      at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2387) 
                                                                      at Android.app.ActivityThread.access$800(ActivityThread.Java:151) 
                                                                      at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1303) 
                                                                      at Android.os.Handler.dispatchMessage(Handler.Java:102) 
                                                                      at Android.os.Looper.loop(Looper.Java:135) 
                                                                      at Android.app.ActivityThread.main(ActivityThread.Java:5254) 
                                                                      at Java.lang.reflect.Method.invoke(Native Method) 
                                                                      at Java.lang.reflect.Method.invoke(Method.Java:372)

Voici mon CollapsingToolbarLayout:

<Android.support.design.widget.CoordinatorLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    >

    <Android.support.design.widget.AppBarLayout
        Android:id="@+id/appbar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        >

        <Android.support.design.widget.CollapsingToolbarLayout
            Android:id="@+id/collapsing_toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:clickable="true"
            app:contentScrim="@color/blue"
            app:statusBarScrim="@color/blue_dark"
            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
            >

            <include layout="@layout/layout_page" />

            <Android.support.v7.widget.Toolbar
                Android:id="@+id/toolbar"
                Android:layout_width="match_parent"
                Android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                />

        </Android.support.design.widget.CollapsingToolbarLayout>

    </Android.support.design.widget.AppBarLayout>

    <include
        layout="@layout/layout"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        />

</Android.support.design.widget.CoordinatorLayout>

Voici mon fichier de classement:

compile 'com.google.Android.gms:play-services:9.0.0'
compile 'com.Android.support:recyclerview-v7:23.4.0'
compile 'com.Android.support:support-v13:23.4.0'
compile 'com.Android.support:appcompat-v7:23.4.0'
compile 'com.Android.support:cardview-v7:23.4.0'
compile 'com.Android.support:customtabs:23.4.0'
compile 'com.Android.support:design:23.4.0'

Avez-vous les gars une idée? Merci.

21
Shumin

J'ai trouvé une solution. Peut-être que ça marche essayer:

ajouter le code ci-dessous dans le fichier de construction de Gradle

compile ('com.Android.support:support-v4:23.4.0'){
    force = true;
}

On dirait qu'il a un problème de conflit de version. Toutes les bibliothèques de support doivent être de la même version. Cependant, je n’avais jamais utilisé la bibliothèque de support technique v4 auparavant et cela fonctionne . Je ne sais pas pourquoi la mise à jour du studio Android à la version 2.1.1 cause le problème . bibliothèques.

38
Shumin

Je sais qu'il existe déjà une réponse acceptée, MAIS cela ne fonctionne pas (ou ne fonctionne plus).

J'ai passé quelques heures à rechercher cette erreur, voici ce que j'ai découvert. 

Tout d'abord, en raison de la version initiale d'Android Nougat, également appelé Android 7.0 (API 24), compileSdkVersion 24 est maintenant disponible. Pour ce faire, vous devez mettre à jour votre sdk. Étape 1

 enter image description here

Deuxièmement, vous devez mettre à jour vos fichiers Gradle (connexion Internet requise). Étape 2

 enter image description here

Mettez également à jour cette partie de app.gradle

 enter image description here

Troisième (facultatif) Projet propre, Projet de construction (les deux sous l’onglet Construire)

J'espère que cela a aidé quelqu'un et économisé quelques heures de recherche. 

Cheers/Joyeux codage

17
ralphgabb

j'ai trouvé deux solutions,

le premier est

app:statusBarScrim="@null"

la seconde est de forcer l'application

compile ('com.Android.support:support-v4:23.4.0') {
    force = true;
}

Sources prises de ici

3
Numan Turkeri

J'ai eu le même problème, le code de @ Shumin est efficace aussi, mais il est préférable de supprimer les conflits plutôt que de les contourner. Pour trouver le conflit -

  1. Dans Android Studio, ouvrez Terminal et entrez gradlew app:dependencies.  Terminal Image

  2. Consultez l'arborescence des dépendances et voyez quelle bibliothèque est à l'origine du conflit  Dependencies

Update: - Pour vérifier les conflits, vérifiez les dépendances de chaque bibliothèque et vérifiez si vous n'utilisez pas la même dépendance dans une autre bibliothèque, mais avec une version différente. Par exemple, dans l'image ci-dessous, com.Android.support:appcompat-v7 dépend de com.Android.support:support-vector-drawable:23.4.0. Si vous trouvez une autre bibliothèque dépendant de com.Android.support:support-vector-drawable mais que la version est différente, alors vous avez trouvé votre conflit.

1
Rohan Kandwal

Cela a fonctionné pour moi. Changez votre appcompact et concevez la version libray comme suit, 

compile 'com.Android.support:appcompat-v7:23.1.1'
compile 'com.Android.support:design:23.1.1'
0
Parinda Rajapaksha

veuillez ajouter le code ci-dessous dans menifiest.xml.

 <activity Android:name=".MainActivity"
        Android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

et fichier de ressources de style

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>
0
RkKhanpuriya

Si vous travaillez sur Oreo ou upper sdk et que vous utilisez un dessin dans CollapsingToolbar, vérifiez que ce dessin existe dans dossier normal dessinable et drawable-v24 dossier.

Si votre dessin est uniquement dans le dossier drawable-v24 et que l'application est exécutée sous Oreo sdk, Android Studio logcat indique "crash in CollapsingToolbar", mais il manque un problème réel dans votre dessin. 

0
TeachMeJava

Bonjour ami, je fais face à ce problème

Juste faire 

compileSdkVersion 25
buildToolsVersion "25.0.2"

Et tous soutiennent le passage à 25.1.1, c’est un travail pour moi.

0
Maulik Santoki

J'ai eu le même problème montrant la même erreur en gonflant la barre CollapsingTool ... ... J'ai eu les dépendances suivantes dans mon fichier de dégradé d'application

compile 'com.Android.support:appcompat-v7:23.4.0'
compile 'com.Android.support:design:23.4.0'
compile 'com.Android.support:recyclerview-v7:23.4.0'
compile 'com.Android.support:cardview-v7:23.4.0'
compile 'com.google.firebase:firebase-ads:10.0.1'

et compilez l’outil 25.0.2 avec API 23 sdk . compilé avec les dépendances et découvert que firebase utilise 

Android:support:support-v4:24.0.0

et l'appcompat utilise

Android:support:support-v4-23.4.0 -> 24.0

Par conséquent, j'ai changé tout le numéro de la bibliothèque de construction en 

compile 'com.Android.support:appcompat-v7:24.0.0'
compile 'com.Android.support:design:24.0.0'
compile 'com.Android.support:recyclerview-v7:24.0.0'
compile 'com.Android.support:cardview-v7:24.0.0'
compile 'com.google.firebase:firebase-ads:10.0.1'

Cela a fonctionné pour moi maintenant. Quelle est la durabilité? Je n'ai aucune idée.

0
joshiparas

Mon problème était que toutes les importations de support de bibliothèque n'importaient pas la même chose, par exemple, j'avais:

  compile('com.Android.support:recyclerview-v7:23.4.0') {
        exclude module: 'support-v4'
    }
  compile 'com.Android.support:support-annotations:24.0.0'

en le changeant pour que toutes les importations soient 24.0.0, l'application s'est exécutée sans problème.

0
AllDayAmazing