不要请求Window.FEATURE_ACTION_BAR问题

时间:2015-06-18 18:48:21

标签: java android xml appcompatactivity

我正在尝试构建我的应用程序,但没有成功..我尝试了几种方式,但没有任何工作。例外是:

Accept

我的style.xml是:

Content-Type

你可以看到我宣布了

Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.

这是我的manifest.xml

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light">

        <!-- theme customizations -->

        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>

        <item name="android:textColorPrimary">@color/ldrawer_color</item>
        <item name="actionMenuTextColor">@color/ldrawer_color</item>
        <item name="android:textColorSecondary">@color/ldrawer_color</item>
    </style>

</resources>

和我用来扩展其他活动的<item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item>

 <application
        android:allowBackup="true"
        tools:replace="android:icon"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

我不知道它崩溃的原因。启动应用程序而不崩溃的唯一方法是在BaseActivity中的style.xml上设置父级,但这样状态栏是透明的而不是彩色的。 ..

5 个答案:

答案 0 :(得分:47)

使用Theme.AppCompat.Light告诉Android您希望框架为您提供ActionBar。但是,您正在创建自己的ActionBar(Toolbar),因此您可以为框架提供有关ActionBar来源的混合信号。

由于您使用的是工具栏,因此需要Theme.AppCompat.Light.NoActionBar

下一步是确保您的工具栏样式正确,这似乎是您遇到问题的地方。要使用您为主题定义的颜色为ActionBar设置工具栏样式,您需要提供如下主题:

<android.support.v7.widget.Toolbar
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />

有关详细信息,请参阅this Android Developers blog post上工具栏小部件的“样式”部分。

答案 1 :(得分:13)

假设你在styles.xml中有这一行:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

在以下后面添加这些额外的行:

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

然后将其添加到清单中的活动:

<activity android:name=".activity.YourActivity"
          android:theme="@style/AppTheme.NoActionBar"><!-- ADD THIS LINE -->

在检查教程和其他解决方案后,这对我来说是最好的解决方案

答案 2 :(得分:4)

在我的情况下,我创建了一个新活动,忘了在AndroidManifest.xml中定义它的app:theme:

import numpy as np
import matplotlib.pyplot as plt

ind = np.arange(5)
avg_bar1 = (81191,79318,57965,60557,14793)
avg_bar2 = (26826,26615,31364,31088,55472)
avg_bar3 = (36232,38038,38615,39014,40812)
avg_bar4 = (26115,25879,25887,28326,27988)

fig, ax = plt.subplots()

rects1 = ax.bar(ind, avg_bar1, 0.15, label='bar1')
rects2 = ax.bar(ind + 0.15, avg_bar2, 0.15, label='bar2')
rects3 = ax.bar(ind + 0.30, avg_bar3, 0.15, label='bar2')
rects4 = ax.bar(ind + 0.45, avg_bar4, 0.15, label='bar2')

plt.xlabel('Distributions')
plt.ylabel('ms')
plt.xticks(ind + 0.15, ('50/50', '60/40', '70/30', '80/20', '90/10'))
plt.legend()

plt.tight_layout()
plt.show()

答案 3 :(得分:1)

我在更改&#34; android:theme&#34;的值后解决了这个问题。来自&#34; @ style / AppTheme&#34;的清单中的活动to&#34; @ style / AppTheme.NoActionBar&#34;:

<activity android:name=".MyXXXActivity"
            ...                android:theme="@style/AppTheme.NoActionBar" />

答案 4 :(得分:0)

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

 <android.appcompat.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.NoActionBar">

 </android.appcompat.widget.Toolbar>
 <activity android:name=".activity.activity_name"
           android:theme="@style/AppTheme.NoActionBar">
 </activity>