【问题标题】:Can't create an activity with an ActionBar无法使用 ActionBar 创建活动
【发布时间】:2016-02-26 22:53:02
【问题描述】:

我刚刚下载了 Eclipse 并使用 android-support-v7-appcompat 和 sdk api 23 创建了一个 ActionBarActivity。当我尝试运行该应用程序时,我得到了这个异常(错误膨胀类 android.support.v7.widget.Toolbar) :

02-27 00:42:13.266: E/VdcInflateDelegate(17270): Exception while inflating <vector>
02-27 00:42:13.266: E/VdcInflateDelegate(17270): org.xmlpull.v1.XmlPullParserException: Binary XML file line #17<vector> tag requires viewportWidth > 0
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.graphics.drawable.VectorDrawableCompat.updateStateFromTypedArray(VectorDrawableCompat.java:535)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.graphics.drawable.VectorDrawableCompat.inflate(VectorDrawableCompat.java:472)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.graphics.drawable.VectorDrawableCompat.createFromXmlInner(VectorDrawableCompat.java:436)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.v7.widget.AppCompatDrawableManager$VdcInflateDelegate.createFromXmlInner(AppCompatDrawableManager.java:829)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:303)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:178)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at java.lang.reflect.Constructor.constructNative(Native Method)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.view.LayoutInflater.createView(LayoutInflater.java:600)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:379)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:300)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:264)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at com.testing.name.MainActivity.onCreate(MainActivity.java:13)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.app.Activity.performCreate(Activity.java:5451)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2386)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.app.ActivityThread.access$900(ActivityThread.java:169)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.os.Handler.dispatchMessage(Handler.java:102)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.os.Looper.loop(Looper.java:136)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at android.app.ActivityThread.main(ActivityThread.java:5476)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at java.lang.reflect.Method.invokeNative(Native Method)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at java.lang.reflect.Method.invoke(Method.java:515)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
02-27 00:42:13.266: E/VdcInflateDelegate(17270):    at dalvik.system.NativeStart.main(Native Method)
02-27 00:42:13.276: E/AndroidRuntime(17270): FATAL EXCEPTION: main
02-27 00:42:13.276: E/AndroidRuntime(17270): Process: com.testing.name, PID: 17270
02-27 00:42:13.276: E/AndroidRuntime(17270): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.testing.name/com.testing.name.MainActivity}: android.view.InflateException: Binary XML file line #36: Error inflating class android.support.v7.widget.Toolbar
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2328)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2386)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.app.ActivityThread.access$900(ActivityThread.java:169)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.os.Handler.dispatchMessage(Handler.java:102)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.os.Looper.loop(Looper.java:136)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.app.ActivityThread.main(ActivityThread.java:5476)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at java.lang.reflect.Method.invokeNative(Native Method)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at java.lang.reflect.Method.invoke(Method.java:515)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at dalvik.system.NativeStart.main(Native Method)
02-27 00:42:13.276: E/AndroidRuntime(17270): Caused by: android.view.InflateException: Binary XML file line #36: Error inflating class android.support.v7.widget.Toolbar
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.view.LayoutInflater.createView(LayoutInflater.java:626)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:379)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:300)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:264)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at com.testing.name.MainActivity.onCreate(MainActivity.java:13)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.app.Activity.performCreate(Activity.java:5451)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
02-27 00:42:13.276: E/AndroidRuntime(17270):    ... 11 more
02-27 00:42:13.276: E/AndroidRuntime(17270): Caused by: java.lang.reflect.InvocationTargetException
02-27 00:42:13.276: E/AndroidRuntime(17270):    at java.lang.reflect.Constructor.constructNative(Native Method)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.view.LayoutInflater.createView(LayoutInflater.java:600)
02-27 00:42:13.276: E/AndroidRuntime(17270):    ... 25 more
02-27 00:42:13.276: E/AndroidRuntime(17270): Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.content.res.Resources.loadDrawable(Resources.java:3063)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.content.res.Resources.getDrawable(Resources.java:1624)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
02-27 00:42:13.276: E/AndroidRuntime(17270):    ... 28 more
02-27 00:42:13.276: E/AndroidRuntime(17270): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:986)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.graphics.drawable.Drawable.createFromXml(Drawable.java:930)
02-27 00:42:13.276: E/AndroidRuntime(17270):    at android.content.res.Resources.loadDrawable(Resources.java:3059)
02-27 00:42:13.276: E/AndroidRuntime(17270):    ... 38 more

这是清单中的应用程序标记,它使用操作栏的样式:

 <uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="23" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

风格:

<?xml version="1.0" encoding="utf-8"?>

<style name="AppTheme" parent="@style/Base.Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@android:color/white</item>
    <item name="background">@android:color/white</item>
    <item name="android:icon">@android:color/transparent</item>
    <item name="icon">@android:color/transparent</item>
    <item name="titleTextStyle">@style/ActionBarTitleText</item>
    <item name="subtitleTextStyle">@style/ActionBarSubTitleText</item>
</style>

<style name="ActionBarTitleText" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/bluedark</item>
    <item name="android:textSize">28sp</item>
    <item name="android:gravity">center</item>
</style>

<style name="ActionBarSubTitleText" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/bluedark</item>
    <item name="android:textSize">35sp</item>
    <item name="android:gravity">center</item>
</style>

在活动的图形布局中,我什至看不到操作栏。 我该如何解决这个问题?

【问题讨论】:

    标签: android eclipse android-layout android-xml


    【解决方案1】:

    我认为这是兼容性库中的一个错误。 (与试图夸大兼容性布局 abc_screen_toolbar.xml 有关。)

    在使用 V7 库 v23.2.0 时,有几种方法可以解决此问题:

    (按最简单但最差的解决方案的顺序排列,最后是更好但更复杂的替代方案)

    • 恢复到 V7 库的 v23.0.1 或更早版本(而不是使用 23.2.0)
    • 使用compile 'com.android.support:support-annotations:23.2.0' compile 'com.android.support:support-annotations:23.2.0@aar'(注意没有@aar,这通常更好,但在这种情况下显然不是)
    • 切换到在布局中显式使用兼容性工具栏小部件,而不是依赖内置的旧 ActionBar 类。 (请参阅 Android 指南 Setting Up the App Bar,它使用 AppBarLayoutandroid.support.v7.widget.Toolbar 并通过调用 setSupportActionBar() 附加。

    【讨论】:

    • 我确实切换到了工具栏
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多