此活动已经有一个由窗口装饰提供的操作栏(FEATURE_ACTION_BAR)
Posted
技术标签:
【中文标题】此活动已经有一个由窗口装饰提供的操作栏(FEATURE_ACTION_BAR)【英文标题】:This Activity already has an action bar supplied by the window decor (FEATURE_ACTION_BAR) 【发布时间】:2015-03-03 07:22:06 【问题描述】:这个 Activity 已经有一个由窗口装饰提供的操作栏。不要在主题中请求 Window.FEATURE_ACTION_BAR 并将 windowActionBar 设置为 false 以使用工具栏来代替
这是我遇到的错误,我搜索了解决方案,但没有找到解决方法。 这是我的代码:
styles.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/myPrimaryColor</item>
<item name="colorPrimaryDark">@color/myPrimaryDarkColor</item>
<item name="colorAccent">@color/myAccentColor</item>
<item name="android:textColorPrimary">@color/myTextPrimaryColor</item>
</style>
<style name="ActionBarPopupThemeOverlay" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowActionBar">false</item>
</style>
<style name="Toolbartitle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
<item name="android:textColor">@android:color/white</item>
</style>
<style name="ToolbarSubtitle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle">
<item name="android:textColor">#56FFFFFF</item>
</style>
send_comment.xml(我的活动布局)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_
android:layout_>
<android.support.v7.widget.Toolbar
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/my_toolbar"
android:layout_
app:popupTheme="@style/ActionBarPopupThemeOverlay"
android:layout_
android:background="?attr/colorPrimary"
android:paddingLeft="72dp"
android:paddingBottom="16dp"
android:gravity="bottom"
app:titleTextAppearance="@style/Toolbartitle"
app:subtitleTextAppearance="@style/ToolbarSubtitle"
app:theme="@style/ThemeOverlay.AppCompat.Light"
android:title="תגובה"
/>
</RelativeLayout>
SendComment.java
public class SendComment extends ActionBarActivity
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.send_comment);
toolbar = (Toolbar) findViewById(R.id.my_toolbar);
toolbar.setTitle("");
setSupportActionBar(toolbar);
我做错了什么?
【问题讨论】:
This Activity already has an action bar supplied by the window decor 的可能重复项 您说您搜索了解决方案,但最热门的是上面发布的重复建议。是不是完全一样的问题? 但是我搜了一下找到了,看是我把它加到了工具栏的样式里。如果我把它加到AppTheme,应用会崩溃,因为它不是唯一的activity,而且其他人使用此操作栏。那么,如果我已经尝试过您现在所说的话,为什么要给我分呢? 【参考方案1】:在您的 AppTheme 样式中使用,
Theme.AppCompat.Light.NoActionBar
而不是
Theme.AppCompat.Light.DarkActionBar
您正在设置一个具有操作栏的主题,然后您正在将工具栏设置为操作栏。这就是您收到此错误的原因。
改用没有操作栏的主题,它会解决问题。
【讨论】:
但我将 AppTheme 用于其他活动,当我更改它时,其他活动崩溃:/ 然后将主题应用于清单 xml 中的单个活动...。创建一个单独的样式,父级为 Theme.AppCompat.NoActionBar 并将其用于您需要工具栏的活动 好的,我将android:theme="@style/ActionBarPopupThemeOverlay"
添加到特定活动中,它正在工作。感谢您的帮助
很高兴我能帮上忙……快乐的编程:)
我现在遇到了同样的问题并进行了所有更改,但仍然无法正常工作。我认为 Android Studios 1.1 不会更新主题更改,除非您将其无效,但一旦我无效,它就可以正常工作。【参考方案2】:
使用风格name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"
并且到处都使用相同的主题,因为它不会在两个 ActionBar 之间混淆。
【讨论】:
【参考方案3】:Define this style
<style name="NoActionBarTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="textColorError">@color/design_textinput_error_color_light</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:actionMenuTextColor">@color/color_white</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>
Please use this in your androidmanifest.xml file.This will resolve your problem.
【讨论】:
请同时包含上面引用的 res/values/color 和 res/values/style 的内容。以上是关于此活动已经有一个由窗口装饰提供的操作栏(FEATURE_ACTION_BAR)的主要内容,如果未能解决你的问题,请参考以下文章