此活动已经有一个由窗口装饰提供的操作栏(FEATURE_ACTION_BAR)

Hai*_*127 19 android android-layout android-activity android-toolbar

此活动已经有一个由窗口装饰提供的操作栏.不要在主题中请求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>
Run Code Online (Sandbox Code Playgroud)

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_width="match_parent"
              android:layout_height="match_parent">
    <android.support.v7.widget.Toolbar
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/my_toolbar"
            android:layout_height="128dp"
            app:popupTheme="@style/ActionBarPopupThemeOverlay"
            android:layout_width="match_parent"
            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>
Run Code Online (Sandbox Code Playgroud)

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Hir*_*bar 75

在你的AppTheme风格使用中,

Theme.AppCompat.Light.NoActionBar
Run Code Online (Sandbox Code Playgroud)

代替

Theme.AppCompat.Light.DarkActionBar
Run Code Online (Sandbox Code Playgroud)

您正在设置一个包含操作栏的主题,然后您将工具栏设置为操作栏.这就是你得到这个错误的原因.

使用没有操作栏的主题,它将解决问题.

  • 然后将主题应用于清单xml中的单个活动....使用parent作为Theme.AppCompat.NoActionBar创建一个单独的样式,并将其用于需要工具栏的活动 (3认同)
  • 好的,我在特定的活动中添加了一行"android:theme ="@ style/ActionBarPopupThemeOverlay"`并且它正在工作.谢谢你的帮助 (3认同)