1

我的活动中有一个包含 3 个项目的操作栏 - 添加项目、选项项目和溢出项目。添加项目设置为始终在操作栏中可见,溢出项目也是如此。我的问题是选项项目 - 我希望它显示在溢出菜单中,但是每当我点击溢出项目(带有 3 个点的图标)时,它根本没有任何作用。但是,如果我单击设备上的内置菜单按钮,它会显示带有选项项的溢出菜单。

所以我的问题是 - 为什么当我单击溢出图标时,什么也没有发生,但是当我单击设备上的内置菜单按钮时,它确实显示了溢出菜单?

这是我的 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_add"
        android:icon="@drawable/ic_action_new"
        android:showAsAction="ifRoom"
        android:title="@string/action_add_ringtone"/>

    <item
        android:id="@+id/action_set_options"
        android:showAsAction="never"
        android:title="Options" />

    <item
        android:id="@+id/action_settings"
        android:icon="@drawable/ic_action_overflow"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="@string/action_settings"/>

</menu>

这是我对 onOptionsItemSelected 的实现:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (id) {
        case R.id.action_settings:
            return super.onOptionsItemSelected(item);
        case R.id.action_add:
            pickRingtone(1000);
            return true;
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
4

1 回答 1

2

您将需要覆盖该onCreateOptionsMenu方法(Ctrl+O在 Android Studio 中)。

@Override
public void onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.your_menu_name, menu);
}

对于片段,它MenuInflater已经是一个参数,您还需要在setHasOptionsMenu(true);某个地方调用,例如在结尾处onCreate

于 2015-01-17T18:40:02.107 回答