Android 如何在FragmentActivity中创建选项菜单?

Android 如何在FragmentActivity中创建选项菜单?,android,android-fragmentactivity,optionmenu,Android,Android Fragmentactivity,Optionmenu,下面是我在“碎片活动”中创建选项菜单时使用的代码:- @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.main, menu); return true; } // Menu options to set and can

下面是我在“碎片活动”中创建选项菜单时使用的代码:-

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

    // Menu options to set and cancel the alarm.
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            // When the user clicks START ALARM, set the alarm.
            case R.id.start_action:
                alarm.setAlarm(this);
                return true;
            // When the user clicks CANCEL ALARM, cancel the alarm. 
            case R.id.cancel_action:
                alarm.cancelAlarm(this);
                return true;
        }
        return false;
    }
有人能告诉我为什么它不起作用吗?这不会影响应用程序,但当我从设备中单击选项菜单按钮时,不会发生任何事情。请帮助解决此问题。 提前谢谢

下面是我的main.xml:-

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/start_action"
        android:showAsAction="ifRoom|withText"
        android:title="@string/start_text" />
    <item android:id="@+id/cancel_action"
        android:showAsAction="ifRoom|withText"
        android:title="@string/cancel_text" />
</menu>

更改

return false;

作为

编辑:

您还必须将以下内容添加到
片段中

setHasOptionsMenu(true);

返回开关盒内的项目,如。这是我的工作

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        // When the user clicks START ALARM, set the alarm.
        case R.id.start_action:
            alarm.setAlarm(this);
            return true;
        // When the user clicks CANCEL ALARM, cancel the alarm. 
        case R.id.cancel_action:
            alarm.cancelAlarm(this);
            return true;

        default:
            return super.onOptionsItemSelected(item);
      }
}

虽然这个问题很老了,但在这里结束它是我认为OP在代码中缺少的

OnCreateOptions菜单

将其与super一起返回为super.onCreateOptions菜单(菜单)

OnOptions项目已选定

将其与super一起返回为super.onOptionsItemSelected(item)


所有的返回类型都是布尔型的,因此当它返回true时,您将知道它工作正常。它类似于super.onCreate(savedInstancestate)。

您是否已将SetHasOptions菜单(true)添加到片段中?@AdityaGupta:-这是一个片段活动。我是否必须在我正在该FragmentActivity上创建的每个fragment中添加SetHasOptions菜单(true)?是的,如果该fragment希望参与选项菜单处理。我按照您的建议尝试了,但没有发生任何事情。经历这一切-对不起,什么也没发生。和以前一样,在选项菜单单击时没有发生任何事情。
setHasOptionsMenu(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        // When the user clicks START ALARM, set the alarm.
        case R.id.start_action:
            alarm.setAlarm(this);
            return true;
        // When the user clicks CANCEL ALARM, cancel the alarm. 
        case R.id.cancel_action:
            alarm.cancelAlarm(this);
            return true;

        default:
            return super.onOptionsItemSelected(item);
      }
}