25

我正在尝试将操作栏中的选项菜单添加到我现有的应用程序中,但它不起作用。如果我使用“hello world”默认应用程序创建一个新项目,我可以在操作栏中看到该按钮。onCreateOptionMenu() 方法似乎从来没有在断点调试中遇到过,怎么了?

我在这两个应用程序上都使用 API 14,这是我的 MainActivity 代码。

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

public class Principale extends Activity {


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ecran_d_acceuil);


}
public boolean onCreateOptionMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.principale, menu);
    return true;
}
 }

我的 menu.xml 代码

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>
</menu>

清单.xml

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

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="14" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.myapp.Principale"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.myapp.Home"
            android:label="@string/title_activity_home" >
        </activity>
        <activity
            android:name="com.example.myapp.ListDir"
            android:label="@string/title_activity_list_dir" >
        </activity>
    </application>
</manifest>
4

18 回答 18

22

就我而言,解决问题的是这个问题的答案;去除

android:theme="@style/AppTheme"

从清单中的标签。

于 2013-12-09T11:09:33.883 回答
15

您是否尝试将应用程序主题设置为支持的主题ActionBar,例如Theme.Holo.Light

另外,在你的Activity你可以试试getActionBar().show();

于 2013-07-30T15:21:16.603 回答
13

Principale 扩展 ActionBarActivity 应该解决这个问题

于 2014-04-06T12:37:55.160 回答
8

您已扩展 Activity。尝试在 java 代码中扩展 ActionBarActivity

于 2015-05-14T10:34:05.940 回答
6

为了您的信息,我解决了我的 actionBar 问题,方法是继续布局 XML 文件,然后按 View Option -> Show Layout Decorations。

View Option 是 Select Design Surface 下方的小眼睛

希望它能解决你的问题。

干杯。

于 2019-03-14T17:28:28.373 回答
6

花了3个小时终于修好了!忘记从清单中删除 android:theme="@style/AppTheme" 。它会导致运行时错误。这就是我解决问题的方法。您的活动应该扩展 AppCompatActivity 而不是 Activity。

于 2016-05-31T22:02:50.287 回答
3

检查您的清单文件在 Activity 声明中是否存在此行,然后将其删除。

android:theme="@style/AppTheme.NoActionBar"
于 2018-07-15T19:27:01.920 回答
2

您的主要活动需要是这样的:

import android.os.Bundle;
import android.app.ActionBar;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ActionBar actionBar = getActionBar();
    actionBar.hide();

    actionBar.show();
    actionBar.setSubtitle("subtitle");
    actionBar.setTitle("title"); 


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return true;
}

@Override  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.action_refresh:
      Toast.makeText(this, "Menu Item 1 selected", Toast.LENGTH_SHORT)
          .show();
      break;

         default:
             break;
             }
    return true;
    } 



}

和你的 main.xml 像这样:

 <menu xmlns:android="http://schemas.android.com/apk/res/android" >

     <item
         android:id="@+id/action_refresh"
         android:orderInCategory="100"
         android:showAsAction="always"
         android:icon="@drawable/ic_action_search"
         android:title="Refresh"/>
    <item
        android:id="@+id/action_settings"
        android:title="Settings">
    </item>

</menu> 

这是创建操作栏的简单指南: http ://www.vogella.com/tutorials/AndroidActionBar/article.html

于 2013-07-30T15:29:43.003 回答
2

在创建您的活动时。

getSupportActionBar().setDisplayShowCustomEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(false);
        customNav = LayoutInflater.from(this).inflate(
                R.layout.action_bar_customvieew, null);
        getSupportActionBar().setCustomView(customNav);
于 2015-05-22T11:25:27.477 回答
2

在这方面解决我的问题的是,在 中design view,单击eye图标 ( view options) 并选择Show Layout Decorations

在 Android Studio 3.5 的 IDE 中显示眼睛图标的图像

于 2019-09-09T23:50:44.857 回答
1

确保你不使用:

requestWindowFeature(Window.FEATURE_NO_TITLE);

在您的布局 .xml 文件中。

于 2014-05-19T17:50:38.737 回答
1

在我的情况下,操作栏菜单在使用时不可见 public class MainActivity extends Activity { } 但在使用时可见 public class MainActivity extends ActionBarActivity{ }

于 2015-02-26T14:11:20.433 回答
1

我遇到了同样的问题,我确认如果您从 中删除android:theme="@style/AppTheme"AndroidManifest.xml它将解决您的问题。

于 2015-09-26T22:16:42.793 回答
1

你应该扩展AppCompatActivity.

于 2016-03-09T21:48:43.443 回答
0

你必须调用方法 setHasOptionsMenu(true); 在 OnCreate 方法中

于 2014-03-10T16:28:49.163 回答
0

我正在使用 Samsung young 2 作为 android 模拟器,我有同样的问题,我通过 android:theme =""从 manifest.xml 中删除并将主题更改为另一个主题支持操作栏来解决这个问题

于 2015-05-22T11:18:34.693 回答
0
getSupportActionBar().show();

只需将此代码粘贴到您的 java onCreate函数中即可。

于 2017-08-17T21:49:51.990 回答
-1

我的 Android Studio 版本是 4.2.1,适用于 Windows 64 位 (933 MiB)。就我而言,我在设计视图中没有“显示布局装饰”选项。我所做的是通过继续布局 XML 文件然后按 View Option -> Show System UI 解决了我的操作栏问题

android studio中的ActionBar可见性:</p>

在此处输入图像描述

于 2021-06-15T16:07:09.990 回答