【问题标题】:Error: This Activity already has an action bar supplied by the window decor错误:此活动已经有一个由窗口装饰提供的操作栏
【发布时间】:2016-06-09 17:05:12
【问题描述】:

我查看了其他帖子以寻求答案,但仍然不确定我哪里出错了。每次我尝试启动活动时都会收到此错误。

样式 xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar" parent = "Theme.AppCompat.NoActionBar">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

活动管理控制 xml

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/Theme.AppCompat.NoActionBar">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay"
        />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_admin_control" />

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    android:src="@android:drawable/ic_input_add" />

管理控制活动

public class AdminControl extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_admin_control);
        Toolbar b = (Toolbar) findViewById(R.id.toolbar);
        b.setTitle("Tournaments");
        getSupportActionBar().hide();
        setSupportActionBar(b);
    }

    public void createNewTournament(View v) {
        Intent newIntent = new Intent(this, TournamentCreator.class);
        startActivity(newIntent);
    }
}

Android 清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.kaushikshivakumar.vexteamqueuing">

    <uses-permission android:name="android.permission.INTERNET" />

    <!-- To auto-complete the email text field in the login form with the user's emails -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".AdminLogin"
            android:label="@string/title_activity_admin_login"
            android:parentActivityName=".Initial">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.myname.vexteamqueuing.Initial" />
        </activity>
        <activity android:name=".TournamentCreator" />
        <activity
            android:name=".AdminControl"
            android:label="@string/title_activity_admin_control"
            android:parentActivityName=".Initial"
            android:theme="@style/AppTheme.NoActionBar">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.myname.vexteamqueuing.Initial" />
        </activity>
    </application>

</manifest>

【问题讨论】:

  • 请显示您的 AndroidManifest.xml。
  • 你还有其他的styles.xml吗?可能它被 API 版本覆盖

标签: java android xml


【解决方案1】:

在您的AndroidManifest.xml 中,您的应用程序标签中似乎有android:theme="@style/AppTheme"。将其更改为android:theme="@style/AppTheme.NoActionBar"。还有

<android.support.design.widget.AppBarLayout
    //...
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar">

        <android.support.v7.widget.Toolbar
        //...
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

</android.support.design.widget.AppBarLayout>

【讨论】:

  • 听起来可能是问题所在,但也要验证您的所有样式是否正确。
  • 我已经发布了我的清单;我确实将清单中该活动的主题设置为无操作栏,但它仍然给我错误。感谢您的帮助。
猜你喜欢
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 2016-04-22
  • 1970-01-01
相关资源
最近更新 更多