膨胀类 android.Support.v7.widget 时出错。工具栏?

我试图得到我的应用程序材料设计通过下面的 这种方法

每当我运行应用程序时,它都会显示以下错误:

膨胀类 android.support. v7.widget. Toolbar 时出错。

我检查了我是否正确地添加了应用程序。但对我来说都是正确的。所以请告诉我,我做错了什么?

建造,分级

apply plugin: 'com.android.application'


android {
compileSdkVersion 21
buildToolsVersion '21.0.2'


defaultConfig {
applicationId "io.bxbxbai.feedlistviewdemo"
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles 'proguard-rules.pro'
}
}
}


configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}


dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile project(':materialDesign')
compile 'com.balysv.materialmenu:material-menu:1.4.0'
compile 'com.android.support:appcompat-v7:21.+'
}

日志猫

02:11.641  20583-20583/io.bxbxbai.feedlistviewdemo E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: io.bxbxbai.feedlistviewdemo, PID: 20583
java.lang.RuntimeException: Unable to start activity ComponentInfo{io.bxbxbai.feedlistviewdemo/io.bxbxbai.androiddemos.MainActivity}: android.view.InflateException: Binary XML file line #3: Error inflating class android.support.v7.widget.Toolbar
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2224)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5158)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #3: Error inflating class android.support.v7.widget.Toolbar
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:816)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.java:31)
at android.app.Activity.performCreate(Activity.java:6144)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2181)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5158)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
            at android.view.LayoutInflater.parseInclude(LayoutInflater.java:816)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
            at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
            at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.java:31)
            at android.app.Activity.performCreate(Activity.java:6144)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2181)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5158)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoSuchMethodError: android.support.v4.content.ContextCompat.getDrawable
at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:133)
at android.support.v7.internal.widget.TintTypedArray.getDrawable(TintTypedArray.java:62)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:248)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:190)
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at android.view.LayoutInflater.createView(LayoutInflater.java:594)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
            at android.view.LayoutInflater.parseInclude(LayoutInflater.java:816)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
            at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
            at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.java:31)
            at android.app.Activity.performCreate(Activity.java:6144)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2181)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5158)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)

剪辑

Xml

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


<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimaryDark"/>

Activity _ main. xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame">


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


<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn_feed_list_demo"
android:text="@string/feed_list_demo"/>


</RelativeLayout>
156212 次浏览

请阅读这篇 Google 博客文章: http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

<android.support.v7.widget.Toolbar
android:id="@+id/my_awesome_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary" />

另外,如果您给它相同的“ ID”两次,请从您的 include 中删除“ ID”:

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

我有一些问题,包括 RelativeLayout 中的工具栏,尝试使用 LinearLayout。如果你想覆盖工具栏,可以使用:

 <RelativeLayout>


<LinearLayout>
--INCLUDE tOOLBAR--
</LinearLayout>


<Button></Button>


</RelativeLayout>

我不知道为什么,但这对我很有用。

我能够通过替换以下内容来解决这个问题:

在工具栏布局中,替换下面的所有内容:

android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"

android:minHeight="@dimen/abc_action_bar_default_height_material"
android:background="@color/myColor"

我也遇到过同样的问题。 对我有效的解决方案。 如果使用 v7.Toolbar,则必须使用从 Theme. AppCompat. * 扩展的主题 你不能使用从 android 扩展过来的主题: Theme. Materials. * ,因为它们有不同的样式属性。

希望能有所帮助。

对不起,伙计们。这个问题我早就解决了。我做了很多改变。所以我不知道到底哪个有用。

  1. 我已经按照 Jared Burrows 的建议更改了 ID。

  2. 删除了我的支持库并清理了我的项目,Re 添加了它。

  3. 转到文件-> 无效缓存/重新启动。

希望有用。

这就是我的代码现在的样子

Activity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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="match_parent">


<include
android:id="@+id/toolbar_actionbar"
layout="@layout/toolbar_default"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>


<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar_actionbar">


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


<fragment
android:id="@+id/fragment_drawer"
android:name="com.arul.anahy.drawer.NavigationDrawerFragment"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
app:layout="@layout/fragment_navigation_drawer"/>
</android.support.v4.widget.DrawerLayout>
</RelativeLayout>

Toolbar _ default. xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
style="@style/ToolBarStyle"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="@dimen/abc_action_bar_default_height_material"/>

ToolBarStyle

<style name="ToolBarStyle" parent="">
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>

不清楚为什么这个错误发生在我身上,但我解决了。我使用相同的布局,在线或使用包含,这两者都会导致 NPE 错误。所以我觉得不是布局的问题。

我有一个抽象类 BaseActivity 扩展了 ActionBarActivity,它具有 initActionBar ()方法。我在子类的 OnCreate 中重写并调用此方法。差不多是这样:

android.support.v7.app.ActionBar mActionBar;


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_book_appointment);


// Inject View using ButterKnife
ButterKnife.inject(this);


// Init toolbar & status bar
initActionBar();
}


@Override
protected void initActionBar() {
super.initActionBar();


setSupportActionBar(mToolBar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);


mActionBar = getSupportActionBar();
mActionBar.setDisplayHomeAsUpEnabled(true);
mActionBar.setHomeButtonEnabled(true);
}

我不知道为什么我错了,看起来是一样的。

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_book_appointment);
ButterKnife.inject(this);


setSupportActionBar(mToolBar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);


mActionBar = getSupportActionBar();
mActionBar.setDisplayHomeAsUpEnabled(true);
mActionBar.setHomeButtonEnabled(true);


initActionBar();
}


@Override
protected void initActionBar() {
super.initActionBar();
}

解决这个问题。 首先,必须从 sdk 额外的 android 支持中添加 latestandroid-support-v7-appcompat

  1. 关闭主要项目。
  2. 删除 android-support-v7-appat。
  3. 重启 Eclipse。
  4. 添加 android-support-v7-appat。
  5. 清洁,建设项目。
  6. 然后打开主项目并构建所有项目。
  7. 错误仍然存在。重新启动日蚀。就是这样。

这对我很有用,我强烈建议您使用 Android Studio。

我已经通过这个博客解决了这个问题: http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

问题是你使用了错误的主题,你可以选择像 Theme. AppCompat.NoActionBar 这样的主题,在我的项目中,它可以工作。

我希望能帮助你。

在我的例子中,一个问题是在调用 flater.flate (R.layout.some _ layout,Null)时出现的,作为 ViewGroup 参数的 Null 是问题所在。

我的主要活动的 XML 文档中找到了解决这个问题的方法。最初我的工具栏是 <android.support.v7.widget.Toolbar。为了解决这个问题,我将它改为 <android.widget.Toolbar。 我不知道为什么这个工作,虽然。有人有任何见解,为什么呢?

我删除了以下几行:

以前:

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar1"
android:layout_width="match_parent"
android:layout_height="@attr/actionBarSize"
android:minHeight="@attr/actionBarSize"
android:layout_alignParentTop="true" >

之后:

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentTop="true" >

不要用“@attr/actionBarSize”,而是用特定的维度。

我面临同样的问题,但那是在我更新到 appcompatv23.2.0之后。我尝试了以上所有的建议,但效果不佳。然后,我继续查看我的格拉德尔文件,并更换了:

dependencies {
compile 'com.android.support:appcompat-v7:23.2.0’
compile 'com.android.support:design:23.2.0'

}

与:

dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
}

重建项目,问题就解决了。这可能是应用程序紧凑版 v23.2.0的一个问题,希望能有一个更好的解决方案,这样我们就可以使用新的更新了。

希望这个能帮上忙。 谢谢你。

我在使用 AppCompat Library 的23.2.0版本时遇到了同样的问题。我将支持库更新为23.2.1,问题就解决了。

在23.2.1中已经解决了这个工具栏问题

这对我很有效: 加 将‘ com.android.support: appcompat-v7:21.0.3’编译到 gradle。 将 sdk 目标改为21。希望对你有用!

我已经通过修改 app build.gradle 文件修复了这个问题。

对于 Gradle 插件2.0 +

 android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}

对于 Gradle 插件1.5

 android {
defaultConfig {


generatedDensities = []
}


aaptOptions {
additionalParameters "--no-version-vectors"
}
}

对我来说,在我这样做之后,它就奏效了:

  • 清洁剂。
  • 从我调试过的手机上删除应用程序。
  • 关闭视觉工作室。
  • 删除 android 项目中的文件夹/bin/和/obj/。
  • 再次启动解决方案。

以上的方法对我都不管用。

我的项目中没有工具栏,但是得到了相同的错误。

我清理了项目,卸载了应用程序。 然后我运行了 gradlew 构建——刷新依赖关系,发现 xml 文件中有一些 onclick 事件,但没有相应的代码。

我移除了它们,重建了项目,成功了。

依赖项看起来没有更新,但那是另一回事了。

对于 VS 中的 Xamarin,必须添加

Theme = "@style/MyThemesss"

参加你的活动。

我加上这个,然后继续。

我知道这是一个老问题,但我最近遇到了同样的问题。这最终成为了一个前卫问题(当我将 minifyEnabled设置为 false时,这个问题就不再发生了。)

为了停止它,在启用了前卫的情况下,我将以下内容添加到前卫规则文件中,这要感谢我在其他地方找到的解决方案(在发现问题是前卫之后)

-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

不知道是否有必要,但我还加了这些台词:

-keep class com.google.** { *; }
-keep interface com.google.** { *; }

如果您正在使用新的 安卓实现,当键入 Toolbar 时,Studio 将自动完成它到 android.support.v7.widget.Toolbar,但是您应该使用 androidx.appcompat.widget.Toolbar,否则您将得到这个错误。

在我的例子中,我在 Imageview 的暴涨异常中,在较低的版本和棒棒糖操作系统中得到了这个错误。

我解决了这个异常时,移动所有的图像文件在可绘制的 v-24文件夹到可绘制的文件夹。

问题出在前置棒棒糖设备上。我可以通过替换以下代码来解决这个问题:

在工具栏布局中,替换下面的所有内容:

android:layout_height="?android:attr/actionBarSize"
android:background="?android:attr/colorPrimary"

android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"

对我来说,错误在于:

    <android:support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"/>

而不是:

    <android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"/>

具体来说,我在第一行的“ android”和“ support”之间用了一个冒号,而不是句号。

当我试图在 androidx 实现的新 android 中使用我的旧代码时,就发生了这种情况。 将 XML 定义更改为;

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:titleTextColor="@android:color/white" />

然后在你的 Java 代码;

import androidx.appcompat.widget.Toolbar;