错误膨胀 class com.android.internal.widget.ActionBarContainer
Error inflating class com.android.internal.widget.ActionBarContainer
因此,最近由于 ,我不得不将我的项目从原来的位置移开。
在我 运行 我的项目移动并解决其他错误后,应用程序崩溃并显示 android.view.InflateException:二进制 XML 文件行 #31:膨胀 class 时出错com.android.internal.widget.ActionBarContainer。不幸的是,我不能 post logcat 消息,因为它太大 post,所以我将在这里放一些 Caused by 消息。
除了膨胀异常之外,其他两个异常是:Caused by: java.lang.reflect.InvocationTargetException and Caused by: java.lang.RuntimeException: Failed to resolve attribute at index 13。所有异常和错误本身都引用了 class' setContentView(R.layout.activity_automatic_floor_plan_loader);。在此布局文件中,我使用 AppTheme.AppBarOverlay。我很确定一切都与这个应用程序主题有关,但我不知道要更改什么以及如何更改。我经历了许多 Whosebug 问题,但其中 none 似乎回答或解决了我遇到的错误。这是我的 Style.xml 文件:
这是 Android-Manifest.xml 文件中我的 class' activity:
这是我的 activity.xml (activity_automatic_floor_plan_loader):
这是我的 build.gradle(app) 文件:
如何解决这个错误?非常感谢。
我是这样解决这个错误的:
在 styles.xml 文件中,在第一个 "AppTheme" 样式中,我必须将 Base 放在 Theme.AppCompat 的前面。所以它将是 "Base.Theme.AppCompat.Light.DarkActionBar".
然后我在父androidmanifest.xml中使用了android:theme="@style/AppTheme"。
在子 activity 的 androidmanifest 文件中,我必须放入 android:parentActivityName=".parentActivity" 并删除 android:theme="@style/AppTheme.AppBarOverlay" 来自子 activity 并将其放入 activity.xml(子 activity)文件中,如下所示。
在 activity.xml 文件中的 LinearLayout 标签中,我不得不输入 android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"。它是“@style/AppTheme.AppBarOverlay”的父级。
这 4 个步骤对我有用,如果您遇到此错误,只需按照这些步骤操作,它也应该对您有用。
编辑:
事实证明,解决方案非常简单。要在您的任何活动中拥有操作栏,您只需扩展 AppCompatActivity。只有我的主要 activity 扩展了 AppCompatActivity 而不是其他活动。上面获取操作栏的方法非常模糊,我知道它,但是,它最初有效,但现在我有了正确和直接的解决方案,如果您遇到这样的错误,那么只需检查您是否正在扩展 AppCompatActivity class 还是不行。
您将 ThemeOverlay 设置为 Activity 主题。 ThemeOverlay 仅指定某些属性,因此当在小部件上使用时,它 overlays 这些属性覆盖原始 activity 或父小部件主题。您的 Activity 必须使用完整的主题,例如您的 AppTheme
.
这可能是您要查找的内容:
values/styles.xml
<style name="AppTheme" parent="AppBaseTheme">
<item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item>
<item name="actionBarPopupTheme">@style/AppTheme.PopupOverlay</item>
</style>
AndroidManifest.xml
<activity
android:theme="@style/AppTheme">
</activity>
因此,最近由于
这是 Android-Manifest.xml 文件中我的 class' activity:
这是我的 activity.xml (activity_automatic_floor_plan_loader):
这是我的 build.gradle(app) 文件:
我是这样解决这个错误的:
在 styles.xml 文件中,在第一个 "AppTheme" 样式中,我必须将 Base 放在 Theme.AppCompat 的前面。所以它将是 "Base.Theme.AppCompat.Light.DarkActionBar".
然后我在父androidmanifest.xml中使用了android:theme="@style/AppTheme"。
在子 activity 的 androidmanifest 文件中,我必须放入 android:parentActivityName=".parentActivity" 并删除 android:theme="@style/AppTheme.AppBarOverlay" 来自子 activity 并将其放入 activity.xml(子 activity)文件中,如下所示。
在 activity.xml 文件中的 LinearLayout 标签中,我不得不输入 android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"。它是“@style/AppTheme.AppBarOverlay”的父级。
这 4 个步骤对我有用,如果您遇到此错误,只需按照这些步骤操作,它也应该对您有用。
编辑: 事实证明,解决方案非常简单。要在您的任何活动中拥有操作栏,您只需扩展 AppCompatActivity。只有我的主要 activity 扩展了 AppCompatActivity 而不是其他活动。上面获取操作栏的方法非常模糊,我知道它,但是,它最初有效,但现在我有了正确和直接的解决方案,如果您遇到这样的错误,那么只需检查您是否正在扩展 AppCompatActivity class 还是不行。
您将 ThemeOverlay 设置为 Activity 主题。 ThemeOverlay 仅指定某些属性,因此当在小部件上使用时,它 overlays 这些属性覆盖原始 activity 或父小部件主题。您的 Activity 必须使用完整的主题,例如您的 AppTheme
.
这可能是您要查找的内容:
values/styles.xml
<style name="AppTheme" parent="AppBaseTheme">
<item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item>
<item name="actionBarPopupTheme">@style/AppTheme.PopupOverlay</item>
</style>
AndroidManifest.xml
<activity
android:theme="@style/AppTheme">
</activity>