【问题标题】:error inflating android.support.v7.widget.Toolbar错误膨胀 android.support.v7.widget.Toolbar
【发布时间】:2015-09-08 18:55:05
【问题描述】:

晚上好, 我正在 Eclipse Luna 上开发。今天我已将 SDK 更新为可用的最新版本,更新后所有库都出现错误,因此我在工作区中重新导入了所有库。一切正常,但是当我启动我的一个应用程序时出现此错误。

09-08 20:49:48.830: E/AndroidRuntime(14066): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapp/com.example.myapp.MainActivity}: android.view.InflateException: Binary XML file line #3: Error inflating class android.support.v7.widget.Toolbar
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2352)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2414)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.app.ActivityThread.access$900(ActivityThread.java:151)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1318)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.os.Handler.dispatchMessage(Handler.java:102)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.os.Looper.loop(Looper.java:135)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.app.ActivityThread.main(ActivityThread.java:5283)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at java.lang.reflect.Method.invoke(Native Method)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at java.lang.reflect.Method.invoke(Method.java:372)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
09-08 20:49:48.830: E/AndroidRuntime(14066): Caused by: android.view.InflateException: Binary XML file line #3: Error inflating class android.support.v7.widget.Toolbar
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.view.LayoutInflater.createView(LayoutInflater.java:633)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.view.LayoutInflater.parseInclude(LayoutInflater.java:892)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:802)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at com.example.myapp.MainActivity.onCreate(MainActivity.java:73)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.app.Activity.performCreate(Activity.java:6865)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
09-08 20:49:48.830: E/AndroidRuntime(14066):    ... 10 more
09-08 20:49:48.830: E/AndroidRuntime(14066): Caused by: java.lang.reflect.InvocationTargetException
09-08 20:49:48.830: E/AndroidRuntime(14066):    at java.lang.reflect.Constructor.newInstance(Native Method)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.view.LayoutInflater.createView(LayoutInflater.java:607)
09-08 20:49:48.830: E/AndroidRuntime(14066):    ... 23 more
09-08 20:49:48.830: E/AndroidRuntime(14066): Caused by: java.lang.NoSuchFieldError: No static field abc_text_cursor_mtrl_alpha of type I in class Landroid/support/v7/appcompat/R$drawable; or its superclasses (declaration of 'android.support.v7.appcompat.R$drawable' appears in /data/app/com.example.myapp-2/base.apk)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.support.v7.internal.widget.TintManager.<clinit>(TintManager.java:89)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.support.v7.internal.widget.TintTypedArray.getTintManager(TintTypedArray.java:192)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.support.v7.internal.widget.TintTypedArray.getDrawable(TintTypedArray.java:62)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.support.v7.widget.Toolbar.<init>(Toolbar.java:249)
09-08 20:49:48.830: E/AndroidRuntime(14066):    at android.support.v7.widget.Toolbar.<init>(Toolbar.java:191)
09-08 20:49:48.830: E/AndroidRuntime(14066):    ... 26 more

在 MainActivity(扩展 AppCompatActivity)的 onCreate 中:

toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

我的布局(toolbar.xml)是

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

    <android.support.v7.widget.Toolbar 
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/primary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>


And activity_main is


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

    <android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"  
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

    <LinearLayout
        android:id="@+id/layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar"/>

    <FrameLayout 
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>   

    </LinearLayout>

   <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/drawer"/>   

    </android.support.v4.widget.DrawerLayout>

为了解决这个问题,我尝试了以下解决方案:

1- 删除 android-support-v7-library 并将其重新导入工作区(构建目标在 Android 6.0 上设置)

2- 清理并构建

3-清理并构建工作区的所有项目

4- 将“@style”放在 Theme.AppCompat.NoActionBar 之前

5- 删除并重新导入工作区中的所有项目和库

6- 清理所有工作区并重新启动 Eclipse

似乎没有任何效果,因为我总是收到此错误。拜托,谁能帮我解决一下?在此之前我更新了 SDK 和支持库,这个错误没有出现。提前致谢。

【问题讨论】:

  • abc_text_cursor_mtrl_alpha 由于某种原因没有被编译到您的项目 R 类中。您是否使用任何可能会剥离字段的 proguard 配置?
  • @Kane O'Riley:不,我没有使用 Proguard。这很奇怪。这可能是与 Eclipse 缓存相关的问题吗?
  • 可能是我很久没用Eclipse了。我建议迁移到 Android Studio,因为不推荐或官方支持 Eclipse。
  • 我也有同样的问题。我们唯一的共同点是我们都使用 Android 6.0。这表明这可能是一个操作系统版本错误。

标签: java android xml eclipse


【解决方案1】:

您是否尝试在您的 values/styles.xml 中赋予应用样式:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

【讨论】:

  • 异常是由于R类中缺少字段,这个答案与任何可能有帮助的东西无关。
猜你喜欢
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多