web-dev-qa-db-de.com

Fehler beim Aufblasen der Klasse CollapsingToolbarLayout

Mein CollapsingToolbarLayout stürzt ab, weil der Fehler beim Aufblasen der Klasse Android.support.design.widget.CollapsingToolbarLayout aufgetreten ist.

Ich habe das Android Studio am letzten Wochenende aktualisiert. Vor dem Update funktioniert es einwandfrei. Nachdem ich es aktualisiert hatte, stürzte es ab. Ich habe jedoch versucht, auf die Version 2.0.0 herunterzustufen, und es funktioniert nicht mehr. Mein Kollege hat kein Problem mit dem CollapsingToolbarLayout. Ich bin nicht sicher, was passiert ist.

Der Fehler war:

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)

Hier ist mein 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>

Hier ist meine Gradle-Datei:

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'

Habt ihr eine Idee? Vielen Dank.

21
Shumin

Ich habe eine Lösung gefunden.

fügen Sie den folgenden Code in der Gradle-Build-Datei hinzu

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

Scheint, als ob es Versionskonfliktprobleme gibt. Alle Support-Bibliotheken müssen dieselbe Version haben. Ich habe jedoch noch nicht die v4-Support-Bibliothek verwendet, und es funktioniert. Ich weiß nicht, warum das Aktualisieren von Android Studio auf 2.1.1 das Problem verursacht. Ich zwinge alle v4-Bibliotheken genauso wie andere Unterstützungen Bibliotheken.

38
Shumin

Ich weiß, dass es bereits eine akzeptierte Antwort gibt, ABER es funktioniert nicht (oder nicht mehr).

Ich habe ein paar Stunden damit verbracht, diesen Fehler zu recherchieren. 

Erstens ist compileSdkVersion 24 aufgrund der anfänglichen Veröffentlichung von Android Nougat auch als Android 7.0 (API 24) bekannt. Dazu müssen Sie Ihre SDK aktualisieren. Schritt 1

 enter image description here

Zweitens müssen Sie Ihre Gradle-Dateien aktualisieren (Internetverbindung erforderlich). Schritt 2

 enter image description here

Aktualisieren Sie auch diesen Teil von app.gradle

 enter image description here

Drittes (optionales) Projekt bereinigen, Projekt erstellen (beide unter Registerkarte "Erstellen")

Ich hoffe, das hat jemandem da draußen geholfen und einige Recherchen gespart. 

Cheers/Happy Codierung

17
ralphgabb

ich habe zwei Lösungen gefunden,

der erste ist

app:statusBarScrim="@null"

zweitens ist es zu erzwingen

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

Quellen aus hier

3
Numan Turkeri

Ich hatte das gleiche Problem, der Code von @ Shumin ist auch effektiv, aber es ist besser, Konflikte zu entfernen, anstatt sie zu umgehen. Den Konflikt finden -

  1. Öffnen Sie in Android Studio Terminal und geben Sie gradlew app:dependencies. ein. Terminal Image

  2. Überprüfen Sie die Abhängigkeitsbaumstruktur und sehen Sie, welche Bibliothek Konflikte verursacht  Dependencies

Update: - Um nach Konflikten zu suchen, überprüfen Sie die Abhängigkeiten der einzelnen Bibliotheken und prüfen Sie, ob Sie nicht dieselbe Abhängigkeit in einer anderen Bibliothek verwenden, jedoch mit einer anderen Version. In der Abbildung unten hängt com.Android.support:appcompat-v7 beispielsweise von com.Android.support:support-vector-drawable:23.4.0 ab. Wenn Sie eine andere Bibliothek in Abhängigkeit von com.Android.support:support-vector-drawable finden, die Version jedoch anders ist, haben Sie Ihren Konflikt gefunden.

1
Rohan Kandwal

Das hat bei mir funktioniert. Ändern Sie Ihre appcompact- und Design libray-Version folgendermaßen 

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

bitte fügen Sie den folgenden Code in der Datei menifiest.xml hinzu.

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

und Stil Ressourcendatei

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

Wenn Sie mit Oreo oder der oberen SDK arbeiten und ein Zeichenelement in der CollapsingToolbar verwenden, überprüfen Sie, ob dieses Zeichenelement im Ordner normaler Zeichenordner und drawable-v24 vorhanden ist.

Wenn sich Ihre Zeichenkette nur im drawable-v24-Ordner befindet und die App unter Oreo sdk ausgeführt wird, sagt Android Studio logcat "crash in CollapsingToolbar", aber das eigentliche Problem sind einige Drawables in Ihrem Zeichenordner. 

0
TeachMeJava

Hallo Freund, ich stehe vor diesem Problem

Mach einfach 

compileSdkVersion 25
buildToolsVersion "25.0.2"

Und alle Support-Gradienten ändern sich auf 25.1.1.

0
Maulik Santoki

Ich hatte das gleiche Problem mit dem gleichen Fehler beim Aufblasen der CollapsingToolbar .. Ich hatte die folgenden Abhängigkeiten in meiner App-Gradle-Datei

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'

und Build-Tool 25.0.2 mit mit API 23 kompiliertem sdk . Dann habe ich die Abhängigkeiten überprüft und festgestellt, dass Firebase verwendet 

Android:support:support-v4:24.0.0

und der appcompat verwendet

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

Daher habe ich die gesamte Build-Bibliotheksnummer in geändert 

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'

Es hat jetzt für mich funktioniert. Wie langlebig Ich habe keine Ahnung.

0
joshiparas

Mein Problem war, dass nicht alle Unterstützungsbibliotheken gleich importiert werden, z. B. hatte ich:

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

wenn Sie die Einstellung so ändern, dass alle Importe 24.0.0 waren, konnte die Anwendung ohne Probleme ausgeführt werden.

0
AllDayAmazing