【问题标题】:Android onCreateOptionsMenu not called when hitting the menu button点击菜单按钮时未调用Android onCreateOptionsMenu
【发布时间】:2013-10-08 08:24:34
【问题描述】:

我遇到的问题是,当我点击菜单按钮时,我的应用程序没有显示选项菜单。调试显示点击菜单按钮后没有调用 onCreateOptionsMenu(Menu menu) 方法。我有另一个具有相同菜单代码的应用程序,它在那里工作。所以现在我的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.app_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.options:
            Intent intent = new Intent(this, OptionsActivity.class);
            startActivityForResult(intent, 1);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }

}

在 res -> 菜单 -> app_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
   <item android:id="@+id/options" android:title="@string/options" /> 
</menu>

我不知道为什么在点击菜单按钮后没有调用 onCreateOptionsMenu。我希望你们能帮助我。

编辑:我没有使用 Fragments 并且 onCreateOptionsMenu 真的从来没有被调用过。不是在应用启动时,也不是在我点击设备上的菜单按钮时。

【问题讨论】:

    标签: android menu


    【解决方案1】:

    从您的帖子中不确定您使用的是 Fragments。如果是这样,您必须通过

    设置菜单选项
    setHasOptionMenu(true);
    

    从 Fragment 的 onCreate() 调用此方法,然后将显示选项菜单。

    【讨论】:

      【解决方案2】:

      尝试在您的app_menu.xml 文件中添加这些项目属性:

      <item
          android:id="@+id/options"
          android:orderInCategory="100"
          android:showAsAction="never"
          android:title="@string/options"/>
      

      您必须在 Strings.xml 中为 options 声明一个字符串

      【讨论】:

      • 对我不起作用,我在 Strings.xml 中有一个选项字符串;)
      【解决方案3】:

      它会在应用程序第一次启动时调用,而不是在选择菜单项后调用。

      @Override
          public boolean onMenuItemSelected(int featureId, MenuItem item) {
      if (item.getItemId() == R.id.menuitem_id) {
      }
      return super.onMenuItemSelected(featureId, item);
      }
      

      选择后会调用此方法

      【讨论】:

      • 我的 onCreateOptionsMenu 永远不会被调用,不是在开始时,也不是在我点击设备上的菜单按钮时。但是在另一个具有相同代码的应用程序中它可以工作..
      【解决方案4】:

      在 Manifest 文件中设置目标版本如下: android:minSdkVersion="8" android:targetSdkVersion="10"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多