wake-up-neo.com

Upgrade auf SDK 21 - Fehler beim Aufblasen der Klasse Android.support.v7.internal.widget.ActionBarContainer

Ich versuche, meine App von API19 auf API21 zu aktualisieren

Die wichtigsten Änderungen, die ich an den Eigenschaften von Gradle vorgenommen habe, sind:

compileSdkVersion 21
buildToolsVersion "21.0.2"

minSdkVersion 8
targetSdkVersion 21


compile 'com.Android.support:appcompat-v7:21.0.0'

Die App baut in Ordnung, aber ich bekomme immer die folgende Fehlermeldung:

10-22 23:10:38.867    7972-8058/com.example.Android.demo E/ACRA? com.example.Android.demo fatal error : Unable to start activity ComponentInfo{com.example.Android.demo/com.example.Android.demo.MainActivity2}: Android.view.InflateException: Binary XML file line #27: Error inflating class Android.support.v7.internal.widget.ActionBarContainer
Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.Android.demo/com.example.Android.demo.MainActivity2}: Android.view.InflateException: Binary XML file line #27: Error inflating class Android.support.v7.internal.widget.ActionBarContainer
        at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2298)
        at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2360)
        at Android.app.ActivityThread.access$800(ActivityThread.Java:144)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1278)
        at Android.os.Handler.dispatchMessage(Handler.Java:102)
        at Android.os.Looper.loop(Looper.Java:135)
        at Android.app.ActivityThread.main(ActivityThread.Java:5221)
        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:899)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:694)
 Caused by: Android.view.InflateException: Binary XML file line #27: Error inflating class Android.support.v7.internal.widget.ActionBarContainer
        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.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.ActionBarActivityDelegateBase.ensureSubDecor(ActionBarActivityDelegateBase.Java:273)
        at Android.support.v7.app.ActionBarActivityDelegateBase.createSupportActionBar(ActionBarActivityDelegateBase.Java:155)
        at Android.support.v7.app.ActionBarActivityDelegate.getSupportActionBar(ActionBarActivityDelegate.Java:123)
        at Android.support.v7.app.ActionBarActivity.getSupportActionBar(ActionBarActivity.Java:73)
        at com.example.Android.demo.MainActivity2.onCreate(MainActivity2.Java:243)
        at Android.app.Activity.performCreate(Activity.Java:5933)
        at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1105)
        at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2251)
        at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2360)
        at Android.app.ActivityThread.access$800(ActivityThread.Java:144)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1278)
        at Android.os.Handler.dispatchMessage(Handler.Java:102)
        at Android.os.Looper.loop(Looper.Java:135)
        at Android.app.ActivityThread.main(ActivityThread.Java:5221)
        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:899)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:694)
 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.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.ActionBarActivityDelegateBase.ensureSubDecor(ActionBarActivityDelegateBase.Java:273)
        at Android.support.v7.app.ActionBarActivityDelegateBase.createSupportActionBar(ActionBarActivityDelegateBase.Java:155)
        at Android.support.v7.app.ActionBarActivityDelegate.getSupportActionBar(ActionBarActivityDelegate.Java:123)
        at Android.support.v7.app.ActionBarActivity.getSupportActionBar(ActionBarActivity.Java:73)
        at com.example.Android.demo.MainActivity2.onCreate(MainActivity2.Java:243)
        at Android.app.Activity.performCreate(Activity.Java:5933)
        at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1105)
        at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2251)
        at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2360)
        at Android.app.ActivityThread.access$800(ActivityThread.Java:144)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1278)
        at Android.os.Handler.dispatchMessage(Handler.Java:102)
        at Android.os.Looper.loop(Looper.Java:135)
        at Android.app.ActivityThread.main(ActivityThread.Java:5221)
        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:899)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:694)
 Caused by: Java.lang.RuntimeException: Failed to resolve attribute at index 11
        at Android.content.res.TypedArray.getDrawable(TypedArray.Java:747)
        at Android.support.v7.internal.widget.ActionBarContainer.<init>(ActionBarContainer.Java:66)
        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.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.ActionBarActivityDelegateBase.ensureSubDecor(ActionBarActivityDelegateBase.Java:273)
        at Android.support.v7.app.ActionBarActivityDelegateBase.createSupportActionBar(ActionBarActivityDelegateBase.Java:155)
        at Android.support.v7.app.ActionBarActivityDelegate.getSupportActionBar(ActionBarActivityDelegate.Java:123)
        at Android.support.v7.app.ActionBarActivity.getSupportActionBar(ActionBarActivity.Java:73)
        at com.example.Android.demo.MainActivity2.onCreate(MainActivity2.Java:243)
        at Android.app.Activity.performCreate(Activity.Java:5933)
        at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1105)
        at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2251)
        at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2360)
        at Android.app.ActivityThread.access$800(ActivityThread.Java:144)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1278)
        at Android.os.Handler.dispatchMessage(Handler.Java:102)
        at Android.os.Looper.loop(Looper.Java:135)
        at Android.app.ActivityThread.main(ActivityThread.Java:5221)
        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:899)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:694)

Ich habe die Version 4 (die ich zuvor verwendet habe) und ActionBarDrawerToggle v7 (mit einer Änderung des neuen Formats für den Konstruktor) ausprobiert, erhalte jedoch immer den gleichen Fehler. Das App-Design ist ein übergeordnetes Element von Theme.AppCompat.Light.DarkActionBar

Ich bin mir nicht sicher, was ich sehen soll.

16
Andrew

Ich hatte das gleiche Problem, als ich versuchte, ?attr/selectableItemBackground zu verwenden, und basierend auf Ihrer Antwort und einigem Stöbern im Internet fand ich heraus, was für mich (und wahrscheinlich auch für Sie) falsch war.

Aus dieser Antwort habe ich gelernt, dass "? Mark verwendet wird, um den Stil im aktuellen Thema zu referenzieren." Was bedeutet, dass Sie bei der Verwendung von? Attr/auf etwas im aktuellen Thema verweisen.

Ich habe festgestellt, dass dieser Absturz nur beim Aufblasen im Anwendungskontext und nicht im Aktivitätskontext auftrat. Dieser Blog-Beitrag erklärt, was im Abschnitt "Kontextfunktionen" passiert.

... [Bei Verwendung des Anwendungskontexts] wird mit dem Standarddesign für das System, auf dem Sie ausgeführt werden, aufgepumpt, nicht mit dem, was in Ihrer Anwendung definiert ist.

Dies bedeutet, dass? Attr/nicht funktioniert, da sie sich auf das aktuelle Thema beziehen und nicht auf das Standard-Systemthema, mit dem Sie aufblasen.

Also? Attr/funktioniert gut, wenn Sie sicherstellen, dass der Aktivitätskontext anstelle des Anwendungskontexts verwendet wird.

17
nibarius

Ich hatte ein ähnliches Problem, ich verwende AppCompat.v21 und unterstütze Android 5.0.

Mein Layout verwendet für einige Werte? Attr/[attribute_name] und ich verwende den Aktivitätskontext.

Ich habe es in "android: attr/[attribute_name]" geändert und jetzt können meine Ansichten auf Geräten mit Android 5.0 problemlos aufgeblasen werden.

8
simplatek

Für mich schien das Problem in Layoutdateien zu liegen, wenn das? Attr/-Format für Werte verwendet wurde. Ich bin mir nicht sicher, ob es sich um ein Thema handelt. Ich habe all dies herausgenommen, um die Dinge zum Laufen zu bringen, und dann Stile wieder hinzugefügt.

6
Andrew

style name = "AppTheme" parent = "Base.V23.Theme.AppCompat" in style.xml hat für meine App funktioniert.

1
Matthias Huber