【问题标题】:Menu is not showing on Action Bar菜单未显示在操作栏上
【发布时间】:2017-03-05 09:25:55
【问题描述】:

我的问题是一个热门问题,我阅读并尝试了很多相关帖子,但我没有意识到预期的结果,显示菜单。我还没有找到合适的解决方案。

我的应用程序在 Android 4.2.2 版本上运行良好。 (版本代码 17)我在 Galaxy Duos 手机上试用过。

我使用的是 Android 版本 7,0(版本代码 24) 我尝试了目标 SDK 版本的更多变体,包括 8、19、24、25,并且没有目标 SDK 规范。

这里是一些相关的部分

-build.gradle

机器人{ compileSdkVersion 25 buildToolsVersion '25.0.2' 默认配置 { 应用程序ID“com.my.mobile.apps.mnb” minSdkVersion 8 } }

-AndroidManifest.xml

android:minSdkVersion="8"

-optionsmenu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/exit"
    android:orderInCategory="102"
    android:showAsAction="ifRoom|withText"
    android:icon="@drawable/ic_menu_exit">
    android:title="@string/menuitem_exit">
</item>
<item android:id="@+id/about"
    android:orderInCategory="101"
    android:showAsAction="ifRoom|withText"
    android:icon="@drawable/ic_menu_info_details">
    android:title="@string/menuitem_about">
</item>
</menu>

-Main.java

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.optionsmenu, menu);
    return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.about:
            Intent intent = new Intent();
            intent.setClass(getApplicationContext(), Info.class);
            startActivity(intent);      
            return true;
        case R.id.exit:
            Intent intentData = new Intent();
            intentData.putExtra("IS_EXIT", new Boolean(true));
            setResult(android.app.Activity.RESULT_OK, intentData);              
            finish();
            System.exit(1);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

提前谢谢你。

【问题讨论】:

  • 你在使用 Fragment 吗?
  • 不是我使用的 Activity 的 Fragment。

标签: android menu show


【解决方案1】:

菜单项的封闭有问题:

 <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/exit"
    android:orderInCategory="102"
    android:showAsAction="ifRoom|withText"
    android:icon="@drawable/ic_menu_exit"
    android:title="@string/menuitem_exit" />  //item not enclosed properly

<item android:id="@+id/about"
    android:orderInCategory="101"
    android:showAsAction="ifRoom|withText"
    android:icon="@drawable/ic_menu_info_details"
    android:title="@string/menuitem_about" />
</menu>

保持简单:

 @Override
public boolean onPrepareOptionsMenu(final Menu menu) {
    getMenuInflater().inflate(R.menu.optionsmenu, menu);
    return super.onCreateOptionsMenu(menu);
}

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

【讨论】:

  • 您好,在我看来,“”是包含在其中的。
  • 是的,但您要在 android:title 之前添加 &gt;
  • 如果我将 minSdkVersion 更改为 11,则菜单项会出现,但主 UI 的内容不会出现。
  • 啊,是的,这是真正的复制粘贴病,注意力不集中。设置“android:showAsAction="ifRoom|withText"”需要将 mindSdkVersion 设置为 11