操作栏未显示。

34
我尝试在我的应用程序中实现一个操作栏。
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/itemAdd"
        android:showAsAction="ifRoom|withText"
        android:title="ADD">
    </item>
    <item
        android:id="@+id/itemRefresh"
        android:showAsAction="ifRoom|withText"
        android:title="REFRESH">
    </item>
    <item
        android:id="@+id/itemHelp"
        android:title="HELP">
    </item>

</menu>

并创建了菜单

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }

在这里输入图片描述

即使minSdkVersion是11,它仍然不显示操作栏。 原因是什么?


你在 AndroidManifest.xml 中为你的活动设置了什么主题? - FD_
android:theme="@android:style/Theme.Black.NoTitleBar" - Asha Soman
你是否使用过以下代码:public MenuInflater getMenuInflater() { return new MenuInflater(this); } 或者像这样调用它:getActivity().getMenuInflater().inflate(R.menu.menu, menu); - g00dy
8个回答

85

在AndroidManifest文件中移除你的动作栏活动主题,这样它就能够工作了...

<application
    android:allowBackup="true"
    android:icon="@drawable/tasktodo"
    android:label="@string/app_name"
    >

不要在应用程序清单文件中添加任何主题。如果您已添加,请将其删除并尝试运行...


感谢您提供最简单的解决方案 :-) - Vishal Kotak
在找了60分钟之后,终于发现为什么操作栏/菜单没有显示,天啊...谢谢你,伙计。 - mpak

7

将您的类中的Activity更改为AppCompatActivity。如果您想快速添加它,这应该是最简单的方法。 我会为新手提供Android OS代码:

public class YourActivity extends Activity 

转化为

public class YourActivity extends AppCompatActivity

5

如果要显示ActionBar,您需要将Activity的样式设置为Theme.Holo或其变体之一。如果您想保持向后兼容性,请在Activity的onCreate中调用setTheme:

setTheme(android.R.style.Theme_Holo);

5
一个具有下面这样清单文件的应用程序:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.Actionbartest"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11" />
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="MyActivity"
                  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>
</manifest>

像这样的菜单.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
            android:id="@+id/itemAdd"
            android:showAsAction="ifRoom|withText"
            android:title="ADD">
    </item>
    <item
            android:id="@+id/itemRefresh"
            android:showAsAction="ifRoom|withText"
            android:title="REFRESH">
    </item>
    <item
            android:id="@+id/itemHelp"
            android:title="HELP">
    </item>
</menu>

像这样的活动
package com.example.Actionbartest;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }
}

看起来像这样。

在此输入图片描述

您确定您的手机或模拟器正在运行Android 3.0或更高版本吗?如果不是,您将得到您的屏幕截图。

要在旧设备上启用操作栏,您应该使用AppCompat/support库(https://developer.android.com/tools/support-library/features.html)。


移除主题后,我遇到了错误 02-05 12:02:23.267: E/AndroidRuntime(8856): Caused by: java.lang.IllegalStateException: 您需要在此活动中使用 Theme.AppCompat 主题(或其子类)。 - Erum

2

我导入 import android.support.v7.app.AppCompatActivity;

然后编辑为 public class MainActivity extends AppCompatActivity

添加到依赖项中

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.0.0'
}

2
    android:allowBackup="true"
    android:icon="@drawable/ic2"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Holo.Light.DarkActionBar" 

这个有效。将其放入您的


0
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" ... >

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".MyActivity" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <!-- Put the RTA label here ... -->
            <meta-data android:name="RTA" android:value="RTA-5042-1996-1400-1577-RTA" />

        </activity>
    </application>
</manifest>

目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

0
你可以尝试在res>values>themes.xml中更改主题。
将父级更改为Theme.AppCompat.Light.DarkActionBar。
<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Base.Theme.Android_Test_2_1" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your dark theme here. -->
        <!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
    </style>
</resources>

对我来说有效

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接