24

我有一个非常简单的代码,但是即使经过长时间的谷歌搜索,我也无法解决这个问题。我想在我的 ActionBar 中有一些 Action Items ,但是每当我运行应用程序时,我看到的只是一个带有 App 徽标和标题的 ActionBar,但没有 Action Items

如果您能帮助我,那就太好了,可能我只是错过了最明显的事情;)

这就是我的 ActionBarActivity 中的方法:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
}

这是 ActionBar 的相关 .xml 文件(名为 main_activity_actions.xml):

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      android:showAsAction="always"  />
<item android:id="@+id/action_compose"
      android:icon="@drawable/ic_action_compose"
      android:title="@string/action_compose" 
      android:showAsAction="always"/>
</menu>
4

4 回答 4

69

这是因为如果您使用支持 AppCompat ActionBar 库和 ActionBarActivity,您应该以不同于在 ActioBarSherlock 或默认 ActionBar 中创建 XML 菜单的标准方式来创建您的菜单。

所以试试这个代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:app="http://schemas.android.com/apk/res-auto">
      <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          app:showAsAction="always"  />
      <item android:id="@+id/action_compose"
          android:icon="@drawable/ic_action_compose"
          android:title="@string/action_compose" 
          app:showAsAction="always"/>
</menu>

并报告这是否有效。

xmlns:app注意:检查应该使用的额外前缀!

于 2013-07-28T21:50:02.527 回答
6

可以确保您没有使用使您的操作项不可见的样式。

例如,如果您使用“android:Theme.Holo.Light.DarkActionBar”,您会看到一个黑色的操作栏,因此您将无法看到您的黑色项目。

切换到“android:Theme.Holo.Light”,它们就会出现。

查看文件(例如) res/values-v14/styles.xml

于 2013-07-29T02:34:39.700 回答
1

在这里,您需要在 xml 中添加菜单,如下所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu_settings"
        android:orderInCategory="0"
        android:showAsAction="always"
        android:icon="@drawable/menu">
    <menu>
        <item android:id="@+id/action_search"
            android:icon="@drawable/ic_action_search"
            android:title="@string/action_search"
            android:showAsAction="always"  />
        <item android:id="@+id/action_compose"
            android:icon="@drawable/ic_action_compose"
            android:title="@string/action_compose" 
            android:showAsAction="always"/>
        </menu>
    </item>
</menu>
于 2013-07-28T21:37:44.483 回答
0

试试这个:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return true;
}
于 2013-07-28T21:36:43.683 回答