it-swarm.com.ru

Обновление до SDK 21 - Ошибка надувания класса Android.support.v7.internal.widget.ActionBarContainer

Я пытаюсь обновить приложение с API19 до API21

Основные изменения, которые я внес в свойства gradle:

compileSdkVersion 21
buildToolsVersion "21.0.2"

minSdkVersion 8
targetSdkVersion 21


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

Приложение работает нормально, но я всегда получаю следующую ошибку:

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)

Я пробовал версию 4 (которую я использовал ранее) и v7 ActionBarDrawerToggle (с изменением на новый формат для конструктора), но всегда получаю ту же ошибку. Тема приложений является родителем Theme.AppCompat.Light.DarkActionBar

Я не совсем уверен, на что смотреть.

16
Andrew

У меня была та же проблема, когда я пытался использовать ?attr/selectableItemBackground, и, основываясь на вашем ответе и некоторых поисках в интернете, я выяснил, что было не так для меня (и, вероятно, для вас тоже).

Из этого ответа я узнал, что «знак«? »Используется для обозначения стиля в текущей теме». Что означает, что когда вы используете? Attr /, вы ссылаетесь на что-то в текущей теме.

Я заметил, что я получаю этот сбой только во время надувания, используя контекст приложения, а не при использовании контекста активности. Этот пост в блоге объясняет, что происходит в разделе «Возможности контекста».

... [При использовании контекста приложения] инфляция будет выполнена с помощью тема по умолчанию для системы, в которой вы работаете, а не что определено в вашей заявке.

Это означает, что? Attr/не будет работать, поскольку они ссылаются на текущую тему, а не на системную тему по умолчанию, которую вы надуваете.

Так что? Attr/работает нормально, если вы уверены, что раздули, используя контекст Activity вместо контекста приложения.

17
nibarius

У меня была похожая проблема, я использую AppCompat.v21 и поддерживаю Android 5.0.

Мой макет использует? Attr/[attribute_name] для некоторых значений, и я использую контекст активности.

Я изменил его на? Android: attr/[attribute_name], и ​​теперь мои взгляды на устройствах под управлением Android 5.0 просто превосходны. 

8
simplatek

Для меня проблема, казалось, была в файлах макета при использовании? Attr/format для значений. Я не уверен, что это связано с темой. Я взял все это, чтобы все заработало, а затем добавил стили обратно.

6
Andrew

style name = "AppTheme" parent = "Base.V23.Theme.AppCompat" в style.xml работал для моего приложения.

1
Matthias Huber